2017-04-24 66 views
0

我找不到从简单的html字符串构建ViewResult的方法。我尝试了许多解决方案,从简单到更精细,但似乎我总是在这个过程中失去(主页面/布局)。从字符串(而不是字符串)呈现MVC ViewResult而不会丢失母版页

这里是一个有效的解决方案,显然因为我没有做什么特别的东西在这里:

public class MyActionResult : ViewResult 
{ 
    public MyActionResult(controller controller, object model) 
    { 
     this.ViewName = "MyView"; 
     this.ViewData.Model = model; 
    } 

    public override void ExecuteResult(ControllerContext context) 
    { 
     base.ExecuteResult(context); 
    } 

} 

从等于该工作的结果只是调用视图(“MyView的”模型),从动作,我去:

public class MyActionResult : ViewResult 
{ 
    public MyActionResult(GenericController controller, object model) 
    { 
     this.View = new MyView(controller, model); 
    } 

    public override void ExecuteResult(ControllerContext context) 
    { 

     base.ExecuteResult(context); 
    } 

} 

public class MyView : IView 
{ 
    public MyView(GenericController controller, object model) 
    { 
    } 

    public void Render(ViewContext viewContext, TextWriter writer) 
    { 
     writer.Write("TEST"); 
    } 
} 

仍在工作,但没有更多的(母版页/布局),只是普通测试。那么医生怎么了?

编辑: 我觉得我需要对我的目标更具体。我有大约十个cshtml页面,我必须在所有MVC项目中复制它们,因为它们都被使用。这些页面使用的HtmlHelper扩展充满只有一个方法调用,比如:

@Html.MvcSharedMenu() 

在这些扩展方法我MvcHtmlStrings合作建立的HTML,我想我可以打电话给我的这些“自定义控件”。我知道Razor Generator,但是我想避免这种解决方案,尤其是当所有的代码已经在视图之外。

+0

“主页”仅适用于ASP.NET WebForms,以及某种程度上,ASP.NET MVC的(传统)ASPX视图引擎 - 它们在ASP.NET MVC中并不存在。 Razor有一个类似(但更灵活)的系统,称为“布局”,与ASPX的主页面略有不同。请澄清你的问题。 – Dai

+0

“母版页”是错误的术语,但是如果他已经显示并且它消失了,那么可以肯定地说他正在使用布局。 –

+0

实际上,我不同意,微软把它称为母版页,并且在MVC MSDN文档中返回一个View()时,无论是名称是语义还是不同的讨论,我们都知道微软对它的命名约定的细致使用如果你已经阅读过Microsoft Style of Style文档,那么他们称之为母版页可以让你继续下去,以便你可以调用它,如果你愿意:https://msdn.microsoft.com/en -us/library/system.web.mvc.controller.view(v = vs.118).aspx#M:System.Web.Mvc.Controller.View%28System.String,System.String,System.Object%29 –

回答

0

读取编辑之后,也许你想要的是这样的:

return View("~/pathToYourView/View.cshtml", yourViewModel); 

这并不阻止你不必创建.cshtml文件,但它让你从创建它们的十名。如果每个模型都只是一个字符串,那么所有的控制器方法都可以共享相同的视图。

+0

我仍然需要将cshtml复制到我的所有项目中,或者使用某种共享项目/文件夹指向。如果没有其他办法,那么我会尝试使用Razor Generator。 – Glopper

相关问题