【发布时间】:2016-06-09 12:49:27
【问题描述】:
当我以通常的方式运行 MVC 请求时,淹没在 HTML 标记中的 ASP 属性被正确解释。
例如
这就是我的观点,
<ul class="nav navbar-nav">
<li><a asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-controller="Home" asp-action="About">About</a></li>
<li><a asp-controller="Home" asp-action="Contact">Contact</a></li>
</ul>
当涉及到浏览器时,这就是它的翻译,
<ul class="nav navbar-nav">
<li><a href="Home/Index">Home</a></li>
<li><a href="/Home/About">About</a></li>
<li><a href="/Home/Contact">Contact</a></li>
</ul>
现在,如果我通过以下函数渲染视图,
public string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ActionContext.ActionDescriptor.Name;
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
var engine = Resolver.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
ViewEngineResult viewResult = engine.FindPartialView(ActionContext, viewName);
ViewContext viewContext = new ViewContext(ActionContext, viewResult.View,
ViewData, TempData, sw, new HtmlHelperOptions());
var t = viewResult.View.RenderAsync(viewContext);
t.Wait();
return sw.GetStringBuilder().ToString();
}
}
隐藏在锚标记中的属性保持原样,看起来它们根本不被视图引擎解释。
<ul class="nav navbar-nav">
<li><a asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-controller="Home" asp-action="About">About</a></li>
<li><a asp-controller="Home" asp-action="Contact">Contact</a></li>
</ul>
【问题讨论】:
-
我想这是因为这些是标签助手,而不是 Razor。
-
嗨,大卫,是的,这是真的,但让它们发挥作用的解决方案是什么。我想检索视图中所有内容的扁平化 HTML,包括剃刀和标签助手。
标签: asp.net-mvc asp.net-mvc-4 razor asp.net-core asp.net-core-mvc