asp.net-mvc – 如何继承ASP.NET MVC控制器并仅更改视图?
发布时间:2020-09-16 06:28:25 所属栏目: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-mvc – Bug? ASP.NET MVC 2中的客户端验证导致Val
- asp.net-mvc – 在ajax请求中返回PDF
- ASP.NET Core 2.0中Razor页面禁用防伪令牌验证
- entity-framework – 如果EF 5,如何定义自定义命名约定
- asp.net-mvc – 从Api控制器内生成绝对的url to action
- asp.net – 请求在IIS工作进程中存在于RequestAcquireState
- asp.net – 为什么HttpContext.Current.User.Identity.Name
- 在ASP.NET中使用querystring的最佳做法?
- asp.net Web.config 详细配置说明
- asp.net-core – 如何使用FluentValidation.AspNetCore和Fl
推荐文章
站长推荐
- asp.net – IIS Express(WebMatrix)打开外部连接
- asp.net+Ajax 文本文件静态分页实现代码
- asp.net-mvc-3 – 用于在ASP.NET MVC3中使用Grid
- asp.net-mvc – 在ASP.NET MVC中添加服务引用4
- asp.net – 我们可以在视图状态中放置哪些类型的
- asp.net下使用jquery 的ajax+WebService+json 实
- 我可以使用ASP.NET成员身份实体框架吗?
- asp.net-mvc – 在没有模型的情况下手动将验证添
- asp.net-mvc – 不要在ASP .NET MVC 4 BundleCon
- asp.net – 在asp页面中显示来自其他站点的网页
热点阅读
