当我以通常的方式运行MVC请求时,HTML标签中浸没的ASP属性被正确解释。
E.g。
这就是我在视图中所拥有的,
<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>
答案 0 :(得分:1)
我尝试了您的RenderPartialViewToString
代码,一切正常。我猜你在使用RenderPartialViewToString
时将视图置于标准View
文件夹之外。所以请尝试下一个代码
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
<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>
所以,如果我是对的,之后一切正常,你可以尝试将_ViewImports.cshtml
文件添加到该文件夹并在那里写@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
,以便该文件夹或子文件夹中的所有视图都将应用相同的逻辑