asp.net-mvc – 如何在mvc中保持视图不受授权逻辑的影响?
发布时间:2020-12-16 03:19:10 所属栏目:asp.Net 来源:网络整理
导读:我有一个显示项目列表的视图. 用户可以编辑,删除或创建新项目,但根据他们的授权,他们可能会或可能不会被允许执行某些操作. 我要求只显示当前用户可以执行的操作,但我不希望使用授权来混淆视图if-else’s 鄙视是一个非常普遍的要求,我找不到一个真正令人满意
我有一个显示项目列表的视图.
用户可以编辑,删除或创建新项目,但根据他们的授权,他们可能会或可能不会被允许执行某些操作. 我要求只显示当前用户可以执行的操作,但我不希望使用授权来混淆视图if-else’s 鄙视是一个非常普遍的要求,我找不到一个真正令人满意的方法. 到目前为止,我最好的方法是为Html.ActionLink扩展方法提供一个过载,该方法需要获得权限,但是会有更复杂的场景,比如隐藏整个html块或者为隐藏的标签切换文本框. 有一个更好的方法吗? 解决方法
我能想到的一个例子是调用Html.RenderAction(链接:
http://msdn.microsoft.com/en-us/library/ee703490.aspx),然后将你希望用作路由值的链接传递给action方法(它将作为你动作的参数出现).因为它是一个RenderAction,所以您可以返回控制器进程,因此您可以根据用户的状态呈现所需的任何视图或数据.
例: <% Html.RenderAction("Permissions" /* Controller */,"PermissionLink",new { Url = "Admin.aspx" }); %> 你的控制器会有类似的东西: public ActionResult PermissionsLink (string url) { // Do Whatever kind of Authentication you want here,Session is available,etc if(authenticated) return View("Link"); else return View("Blank"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET CORE中使用SESSION
- asp.net-mvc – 为什么ASP.Net MVC便携式区域不像Rails插件
- asp.net-mvc – 根据请求域捆绑CSS文件?
- asp.net-mvc – 使用sqlserver express时不创建数据库的Ent
- asp.net-mvc – 类型“表达式<>”在未引用的程序集中定义
- asp.net – Combres的路线(combres.axd)不起作用
- asp.net – 在MVC3中共享区域之间的控制器和视图
- asp.net – Web API IIS要求
- asp.net – 如何从Javascript调用控制器方法
- asp.net-mvc – 如何将现有的SQL Server数据库添加到asp.ne
推荐文章
站长推荐
热点阅读