asp.net-mvc-4 – Razor MVC,在哪里可以通过母版页面,部分视图和
你好Razor MVC Gurus:
新手问题 背景.我有一个自定义的IIdentity,设置在一个HttpModule之前,它得到控制器&观点.要使用它,我必须要做 MyIdentity myIdentity = (MyIdentity)((GenericPrincipal)context.User).Identity; MyComplexUser user = myIdentity.User; //user.name //user.location //user.username //etc 问题是,我在不同的地方使用对象 >主布局 它真的取决于视图需要什么属性的“MyComplexUser”对象. 目前,在意见中,我必须做这个真正复杂的铸造来获得一个财产.例如,如果我想要用户的“名称”,我需要做 @(((MyComplexUser)(((MyIdentity)((的GenericPrincipal)context.User).Identity).用户)).名称) 我想我可以把它放在控制器中,然后用ViewBag.MyUser属性填充ViewBag,但是 >我不喜欢使用ViewBag.我喜欢强类型的对象 谢谢.再次,我是MVC 4的新手,任何建议都非常感谢. 解决方法
我会解释一个类似的解决方案,对我来说很好.有了小的变化,我相信它会为你(和其他人,希望)也是有效的.
基本上,我们将使用继承. 控制器 我们创建一个自定义的基本控制器,如 public class BaseController : Controller 让我们改变我们的控制器来继承它 public class HomeController : BaseController 模型(ViewModels,我说) 你的Models文件夹里可能有很多类,对吧?他们作为DTO从控制器到意见,对? 让我们创建一个基础模型类,如公共类BaseVM,让我们将模型更改为继承,如public class HomeIndex:BaseVM 重要提示:您的布局文件(_Layout或任何)必须强制键入BaseVM或其子. 钩子 现在,所有的东西都是非常简单的,我们来帮助我们使用这个请求管道. protected override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.Result is ViewResultBase)//Gets ViewResult and PartialViewResult { object viewModel = ((ViewResultBase)filterContext.Result).Model; if (viewModel != null && viewModel is BaseVM) { BaseVM baseVM = viewModel as BaseVM; baseVM.MyIdentity = (MyIdentity)((GenericPrincipal)context.User).Identity; //and so on... } } base.OnActionExecuted(filterContext);//this is important! } OnActionExecuted在执行操作之后但在视图呈现之前被调用.这正是我们想要的. 我希望你已经有了. =) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 我想调试(设置一个断点)System.Web.Mvc.Def
- asp.net-mvc – asp.net mvc路由:如何使用默认动作,但非默
- asp.net-mvc – 视图模型和数据传输对象之间的区别是什么?
- Asp.net Webservice – 使用jquery AJAX安全地调用webservi
- asp.net-core – 将参数传递给ASP.NET MVC 6中的需求/策略
- asp.net-web-api – 带有json有效负载中令牌的WebApi授权过
- asp.net – 向实体框架添加其他属性4代码首先是CTP 5实体
- asp.net-mvc – SignalR和MVC包
- asp.net-mvc – 为什么Razor会添加另一个值属性以及如何删除
- asp.net-mvc – Angular.js和WebAPI CRUD示例
- msbuild – 如何为ASP.NET 5项目设置TeamCity构建
- asp.net-mvc-5 – 同一域中的Web API 2项目和MVC
- 从ASP.Net MVC连接到MySQL数据库
- asp.net-mvc – 如何将表单中的复选框序列化为Js
- asp.net – 使用Visual Studio 2008 Web部署项目
- asp.net-mvc – 获取索引值razor foreach
- ASP.NET Ajax – Asynch请求有单独的会话吗?
- asp.net-mvc – ASP.Net MVC 5带范围的Google身份
- 适用于ASP.NET Core 2的MultipartFormDataStream
- asp.net – 在标题后添加Gridview行