asp.net-mvc – 在ASP.NET MVC中创建控件外的ViewResult
发布时间:2020-05-23 04:47:56 所属栏目:asp.Net 来源:互联网
导读:我的几个控制器操作有一组标准的故障处理行为.一般来说,我想: 根据路径数据加载对象(ID等) 如果路径数据不指向有效的对象(例如:通过URL黑客攻击),则通知用户该问题并返回HTTP 404未找到 验证当前用户对该对象具有适当的权限 如果用户没有权限,请通知用户问
|
我的几个控制器操作有一组标准的故障处理行为.一般来说,我想: >根据路径数据加载对象(ID等) >如果路径数据不指向有效的对象(例如:通过URL黑客攻击),则通知用户该问题并返回HTTP 404未找到 >验证当前用户对该对象具有适当的权限 >如果用户没有权限,请通知用户问题并返回HTTP 403 Forbidden >如果上述成功,那么就可以使用特定于动作的对象来做某事(即:在视图中渲染). 这些步骤是如此标准化,我想要有可重用的代码来实现这个行为. 我目前的攻击计划是有一个帮忙的方法来做这样的事情: public static ActionResult HandleMyObject(this Controller controller,Func<MyObject,ActionResult> onSuccess) {
var myObject = MyObject.LoadFrom(controller.RouteData).
if ( myObject == null ) return NotFound(controller);
if ( myObject.IsNotAllowed(controller.User)) return NotAllowed(controller);
return onSuccess(myObject);
}
# NotAllowed() is pretty much the same as this
public static NotFound(Controller controller){
controller.HttpContext.Response.StatusCode = 404
# NotFound.aspx is a shared view.
ViewResult result = controller.View("NotFound");
return result;
}
这里的问题是Controller.View()是一个受保护的方法,因此无法从帮助器访问.我已经明确地创建了一个新的ViewResult实例,但是有足够的属性可以设置,我不必先了解这些陷阱,所以我很谨慎. 从特定控制器外部创建ViewResult的最佳方法是什么? 解决方法只要阅读这篇文章,因为我从一个动作过滤器出现同样的问题.我的解决方案是明确地创建视图操作.这是基于受MVC源的受保护的View()方法,因此它应该填充所需的属性.无论如何,似乎工作没有问题.public static NotFound(Controller controller){
controller.HttpContext.Response.StatusCode = 404;
ViewResult result = new ViewResult {
ViewName = "NotFound",ViewData = controller.ViewData,TempData = controller.TempData
};
return result;
}
有一天晚了,但这对我有用. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 使用web.config进行密码保护的文件夹
- .net – TransactionScope:它变得更好了吗?
- asp.net – @ Url.Action在控制器中创建空值的参数之间添加
- asp.net-mvc – 刷新IdentityServer4客户端中的访问令牌
- asp.net – SQL网络接口,错误:26 – 定位服务器/实例指定错
- asp.net – MSBuild / WebDeploy – 如何防止它删除文件夹及
- 如何在ASP.NET MVC中获得HttpResponse的引用?
- 我如何让Fiddler捕获我的MVC应用程序向我的ASP.NET Web API
- asp.net-mvc – Mocking HttpPostedFileBase和InputStream进
- asp.net-mvc – 在null模型的情况下返回错误响应
推荐文章
站长推荐
- ASP.NET读取XML文件4种方法分析
- 在ASP.NET 4 ReportViewer中使用对象数据源
- asp.net-mvc-5 – 我应该如何从JsonResult控制器
- 如何找到ASP.NET中的哪个对象无法序列化?
- asp-classic – 使用FileSystemObject的文件权限
- ASP.NET C#中的自定义控件
- asp.net – App_Code中的类无法通过Global.asax.
- asp.net – 使用SelectedValue对RadioButtonList
- asp.net-mvc – DotNetOpenAuth在ASP.NET MVC中的
- asp.net – 如何从SQL表中的列获取XML数据?
热点阅读
