Html助手正在运行AFTER视图引擎

时间:2011-02-07 01:59:56

标签: asp.net-mvc-3 razor html-helper

我正在使用带有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')

3 个答案:

答案 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') );
}