在没有控制器操作的情况下生成视图
Generate view without controller action
在我的 ASP.NET MVC 项目中,我有一个控制器,一个操作只是结果视图。此操作没有任何参数,只是 return 一个 CSHTML 页面。此页面不能是部分的。
有没有人知道生成视图的更好方法 - 我的意思是我可以在没有控制器操作的情况下生成视图吗?
//编辑 - 示例代码
现在在我的 UserPanelController 中我有一个操作 ChangeSettings
[HttpGet]
public ActionResult ChangeSettings()
{
return View("Configuration");
}
因此,如果我想获得配置视图,我必须向控制器发出请求,例如导航:
<nav>
<div class="nav-wrapper">
<a href="#" class="brand-logo">Logo</a>
<ul id="nav-mobile" class="right hide-on-med-and-down">
<li><a href="sass.html">Sass</a></li>
<li><a href="badges.html">Components</a></li>
<li><a href="@Url.Action("ChangeSettings","UserPanel")">Konrad</a></li>
</ul>
</div>
</nav>
我可以在没有控制器操作的情况下获得 ConfigurationView 吗?
如果是静态内容,可以在项目中添加一个.html
文件。 Web 服务器将为其提供服务。
为了确保 MVC 路由不会干扰你可以在你的路由中添加这样的东西:
routes.IgnoreRoute("{file}.html");
您可以调用以下方法自己渲染视图
private static string RenderPartialViewToString(Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.ToString();
}
}
这将为您提供 html 包含渲染视图的字符串。我之前用它来呈现 HTML 电子邮件,其中电子邮件内容因用户而异。
希望对您有所帮助。
也许我来晚了,但您可能正在寻找的是:
@{ Html.RenderPartial("_PartialViewName"); }
请注意,您也可以在视图中使用模型,方法是直接从调用局部视图的视图传递模型。
在我的 ASP.NET MVC 项目中,我有一个控制器,一个操作只是结果视图。此操作没有任何参数,只是 return 一个 CSHTML 页面。此页面不能是部分的。
有没有人知道生成视图的更好方法 - 我的意思是我可以在没有控制器操作的情况下生成视图吗?
//编辑 - 示例代码
现在在我的 UserPanelController 中我有一个操作 ChangeSettings
[HttpGet]
public ActionResult ChangeSettings()
{
return View("Configuration");
}
因此,如果我想获得配置视图,我必须向控制器发出请求,例如导航:
<nav>
<div class="nav-wrapper">
<a href="#" class="brand-logo">Logo</a>
<ul id="nav-mobile" class="right hide-on-med-and-down">
<li><a href="sass.html">Sass</a></li>
<li><a href="badges.html">Components</a></li>
<li><a href="@Url.Action("ChangeSettings","UserPanel")">Konrad</a></li>
</ul>
</div>
</nav>
我可以在没有控制器操作的情况下获得 ConfigurationView 吗?
如果是静态内容,可以在项目中添加一个.html
文件。 Web 服务器将为其提供服务。
为了确保 MVC 路由不会干扰你可以在你的路由中添加这样的东西:
routes.IgnoreRoute("{file}.html");
您可以调用以下方法自己渲染视图
private static string RenderPartialViewToString(Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.ToString();
}
}
这将为您提供 html 包含渲染视图的字符串。我之前用它来呈现 HTML 电子邮件,其中电子邮件内容因用户而异。
希望对您有所帮助。
也许我来晚了,但您可能正在寻找的是:
@{ Html.RenderPartial("_PartialViewName"); }
请注意,您也可以在视图中使用模型,方法是直接从调用局部视图的视图传递模型。