C# 生成视图而不执行控制器操作
在我的ASP.NETMVC项目中,我有一个控制器,一个操作只显示结果视图。此操作不获取任何参数,只返回CSHTML页面。此页不能是部分的 有人知道生成视图的更好方法吗?我的意思是,我可以在没有控制器操作的情况下生成视图吗 //编辑-示例代码 现在在我的UserPanelController中,我有一个动作更改设置C# 生成视图而不执行控制器操作,c#,asp.net,asp.net-mvc,razor,asp.net-mvc-controller,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Mvc Controller,在我的ASP.NETMVC项目中,我有一个控制器,一个操作只显示结果视图。此操作不获取任何参数,只返回CSHTML页面。此页不能是部分的 有人知道生成视图的更好方法吗?我的意思是,我可以在没有控制器操作的情况下生成视图吗 //编辑-示例代码 现在在我的UserPanelController中,我有一个动作更改设置 [HttpGet] public ActionResult ChangeSettings() { return View("Configuration"); } 因此,如果我
[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
文件。网络服务器将为其提供服务
为了确保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"); }
请注意,您也可以在视图中使用模型,方法是直接从调用局部模型的视图传递模型 您所说的“生成视图而不执行控制器操作”是什么意思?能否给出示例代码,并请澄清您的问题?第一句,结尾是“一个动作只是结果视图”不是英语,很难猜出它的意思。更多信息请参阅主帖子-抱歉没有示例如果您需要动态呈现视图,它必须通过MVC动作。但是在静态html文件中,我无法获得有关当前用户名的信息,确切地我描述的方法只能用于静态内容。否则,您必须在控制器中创建操作。如果该电子邮件模板没有控制器怎么办?