asp.net-mvc – 如何继承ASP.NET MVC控制器并仅更改视图?
发布时间:2020-09-16 07:06:01 所属栏目:asp.Net 来源:互联网
导读:我有一个继承自基本控制器的控制器,我想知道如何利用基本控制器的所有逻辑,但返回与基本控制器使用的不同的视图. 基本控制器填充模型对象并将该模型对象传递给其视图,但我不确定如何在子控制器中访问该模型对象,以便我可以将其传递给子控制器的视图. 几点.如
我有一个继承自基本控制器的控制器,我想知道如何利用基本控制器的所有逻辑,但返回与基本控制器使用的不同的视图. 基本控制器填充模型对象并将该模型对象传递给其视图,但我不确定如何在子控制器中访问该模型对象,以便我可以将其传递给子控制器的视图. 解决方法几点.如果您知道所有要返回的内容,则可以将返回值键入ViewResult.然后,您可以从重写的实现中查询该值.更重要的是,根据MVC v1源代码,调用View(object)只需在控制器上设置ViewData.Model,然后构造一个ViewResult.Controller.cs:440 protected internal ViewResult View(object model) { return View(null /* viewName */,null /* masterName */,model); } Controller.cs:456 protected internal virtual ViewResult View(string viewName,string masterName,object model) { if (model != null) { ViewData.Model = model; } return new ViewResult { ViewName = viewName,MasterName = masterName,ViewData = ViewData,TempData = TempData }; } 所以你需要做的就是调用base方法并调用View(string). namespace BaseControllers { public class CoolController { public virtual ViewResult Get() { var awesomeModel = new object(); return View(awesomeModel); } } } public class CoolController : BaseControllers.CoolController { public override ViewResult Get() { var ignoredResult = base.Get(); // ViewData.Model now refers to awesomeModel return View("NotGet"); } } 当然,您浪费CPU周期来构建您忽略的ViewResult.所以你可以这样做: public class CoolController : BaseControllers.CoolController { public override ViewResult Get() { var baseResult = base.Get(); baseResult.ViewName = "NotGet"; return baseResult; } } 如果您的基本控制器返回ActionResult,则必须在更改ViewName之前将其强制转换为ViewResult. (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在asp.net App_Code目录中使用Nemerle
- asp.net-mvc – 使用AWS .NET SDK进行SNS订阅确认示例
- asp.net-mvc – 模型单元测试能否真正独立,如何[ASP.NET MV
- asp.net – Html.Partial()跳过控制器动作
- asp.net – 是否有可能过滤SignalR中的接收器?
- asp.net-mvc – ASP.Net [HiddenInput]数据属性在Razor中用
- asp.net-mvc-2 – MVC源代码单例模式
- asp.net-web-api – ASP身份OAuth令牌 – 我应该在移动应用
- asp.net-mvc – 你如何指定在列表框中显示多少项目(高度)
- asp.net-mvc-4 – AngularJs,DropZone.Js,MVC4 – 拖放,预览
推荐文章
站长推荐
- asp.net-mvc-3 – MVC 3 $.ajax – 响应似乎是从
- ASP.NET:将内容注入所有Response流
- asp.net-mvc – ASP .Net MVC 3:子动作和重定向
- asp.net-mvc – ASP.NET MVC Beta 1:DefaultMod
- asp.net – 部分视图呈现按钮点击
- asp.net-mvc – Domain Driven Design新手,请简要
- asp.net-mvc – 控制器操作无法从JSON读取Guid P
- jQuery Ajax方法调用 Asp.Net WebService 的详细
- ASP.NET MVC AJAX文档在哪里?
- 为什么asp.net会员资格有用户表和会员表?
热点阅读