我正在使用带有Razor引擎的ASP.Net MVC 3。
我有一个将返回@ Url.Action的html助手。我遇到的问题是@ Url.Action没有转换成正确的URL。而是将@ Url.Action作为html的一部分返回。
看起来剃刀引擎运行然后html帮助程序在事后运行?这似乎对我不利。有什么我可以改变,以便我的助手先跑?
以下是一个例子:
public static HtmlString Test(this HtmlHelper helper)
{
return new HtmlString("@Url.Action('Logoff', 'Login'");
}
在我的_Layout.cshtml中,我有这个..
@Html.Test()
html将显示为@ Url.Action('Logoff','Login')
答案 0 :(得分:2)
在处理网址时,扩展UrlHelper
似乎更合适和自然:
public static string Test(this UrlHelper helper)
{
return helper.Action("Logoff", "Login");
}
在你看来:
@Url.Test()
答案 1 :(得分:0)
它返回一个字符串,因为你在Url.Action周围有引号 - 删除引号和@并且它应该被评估。
答案 2 :(得分:0)
您引用了url.action
命令,并将其转换为文字字符串。
使用@
也是剃刀语法,在模型/控制器文件中不起作用
使用
public static HtmlString Test(this HtmlHelper helper)
{
return new HtmlString( helper.Action('Logoff', 'Login') );
}