Asp.net mvc 3 Html帮助程序正在视图引擎后运行
我正在使用ASP.NETMVC3和Razor引擎Asp.net mvc 3 Html帮助程序正在视图引擎后运行,asp.net-mvc-3,razor,html-helper,Asp.net Mvc 3,Razor,Html Helper,我正在使用ASP.NETMVC3和Razor引擎 我有一个html助手,它将返回@Url.Action。我遇到的问题是@Url.Action没有被转换成正确的Url。相反,@Url.Action作为html的一部分返回 看起来razor引擎在运行,然后html助手在事后运行?我觉得这有点倒退。有什么我可以更改的,以便我的助手首先运行吗 以下是一个例子: public static HtmlString Test(this HtmlHelper helper) { return new
我有一个html助手,它将返回@Url.Action。我遇到的问题是@Url.Action没有被转换成正确的Url。相反,@Url.Action作为html的一部分返回 看起来razor引擎在运行,然后html助手在事后运行?我觉得这有点倒退。有什么我可以更改的,以便我的助手首先运行吗 以下是一个例子:
public static HtmlString Test(this HtmlHelper helper)
{
return new HtmlString("@Url.Action('Logoff', 'Login'");
}
在my_Layout.cshtml中,我有这个
@Html.Test()
html将显示为@Url.Action('Logoff','Login')它返回一个字符串,因为Url周围有引号。Action-删除引号和@,它应该得到评估。扩展
UrlHelper
在处理Url时似乎更合适、更自然:
public static string Test(this UrlHelper helper)
{
return helper.Action("Logoff", "Login");
}
在你看来:
@Url.Test()
您引用了
url.action
命令,并将其转换为文字字符串
另外,@
的使用是razor语法,在模型/控制器文件中不起作用
使用
未转换为正确的url。它到底转换成什么?编码字符串?@Url.Action作为html的一部分返回。你能从你的助手那里发布一些代码吗,以及如何从视图中调用它?显然我的示例太简单了。我实际上是想返回一个URL列表。不只是一个。最后,我真正想要的是基于我已经拥有的一个站点地图文件的动态菜单,其中包含了一些角色检查。等等,回到我最初的观点。HtmlHelpers似乎无法返回Razor代码。相反,他们必须自己做这些工作才能得到真正的html。是这样吗?我们正在制作菜单。我只举了一个简短的例子。@ShaneC,我不太明白你到底想要什么。您想在发送到浏览器的最终生成的HTML中以
/Login/Logoff
或@Url.Action('Logoff','Login')
结束吗?我想查看/Login/Logoff,但它更像HtmlHelper
,并返回helper.ActionLink
。请参阅我的评论更新。我想要一根大绳子。不仅仅是一个URL,我们还返回将被注入Razor视图的代码。因此,即使这样,我们也不需要剃刀的@Shane,您将需要@html.Test()
视图代码中的@
语法。看看@替换了什么。它只是一个符号,表示代码遵循。在您的控制器和模型中,您始终处于代码模式。很抱歉,我没有注意到您正在使用实际的帮助程序进行生成。这似乎是正确的方向。
public static HtmlString Test(this HtmlHelper helper)
{
return new HtmlString( helper.Action('Logoff', 'Login') );
}