Asp.net mvc 在ASP.NET Core中将Razor视图渲染为字符串会忽略ASP属性

Asp.net mvc 在ASP.NET Core中将Razor视图渲染为字符串会忽略ASP属性,asp.net-mvc,asp.net-mvc-4,razor,asp.net-core,asp.net-core-mvc,Asp.net Mvc,Asp.net Mvc 4,Razor,Asp.net Core,Asp.net Core Mvc,当我以通常的方式运行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="

当我以通常的方式运行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 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>
  • 关于
  • 接触

我尝试了你的
渲染partialviewtostring
代码,一切都很好。我猜当您使用
RenderPartialViewToString
时,您将视图放在standart
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>
@addTagHelper“*,Microsoft.AspNet.Mvc.TagHelpers”
  • 关于
  • 接触

因此,如果我是对的,然后一切正常,您可以尝试将
\u ViewImports.cshtml
文件添加到该文件夹中,并将
@addTagHelper“*,Microsoft.AspNet.Mvc.TagHelpers”
写入其中,以便该文件夹或子文件夹中的所有视图都将应用相同的逻辑

我想这是因为这些是标记帮助程序,而不是Razor。嗨,大卫,是的,这是真的,但让它们发挥作用的决心是什么。我想检索视图中所有内容的扁平化HTML,包括razor和标记帮助程序。嗨,YuriyP,谢谢你的输入。我在标准视图目录下有一个视图,它进一步调用了2个视图组件,它们的cshtml是Views/Shared/components/directory的一部分。上面的超链接是view组件的cshtml的一部分。当我添加标记帮助器时,它会给我空href,即为那些在它的路由表中不存在的控制器/操作生成空href。所以,请仔细检查您的HomeController中是否真的有公共索引方法。如果您正在使用区域,也可能会出现问题(因此在这种情况下,应该指定区域)。另外,如果您使用的是standart路由配置,那么您可以收到类似于
的内容,这是正确的结果,因为Home是默认控制器,Index是默认操作。您是对的!!我使用视图和renderview方法的地方主要是通过webapi公开HTML。使用web api的客户端网站具有带有操作方法的HomeController。作为一个解决方案,我需要在WebAPI项目和HomeController中使用虚拟操作方法创建路线图。现在它工作得很好。非常感谢您为正确的方向提供指导。
            <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>
@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>