双引号之间的剃刀代码

时间:2010-11-22 20:11:02

标签: asp.net-mvc asp.net-mvc-3 razor templating

在Razor View Engine模板中,我想执行以下操作:我想在html 属性的双引号之间放置一些代码。麻烦的是我要插入的代码片段本身包含一些双引号。

<a href="Url.Action("Item", new { id = Model.Item.Id, page = page });">@page</a>

你可以很容易地看到事情变得非常糟糕:-)我知道我可以计算变量中的链接然后使用它,但我宁愿不这样做:

@{ var action = Url.Action("Question", new { id = Model.Question.Id, page = page }); }                   
<a href="@action">@page</a>                                        

3 个答案:

答案 0 :(得分:19)

你不需要使用Razor逃脱或任何事情。 Razor很聪明,可以知道什么时候引号属于属性,因为你在解析它时会在html之外转义。

<a href="@Url.Action("Item", 
       new { id = Model.Item.Id, page = page })">@page</a>

该代码可以正常工作 - 只需确保在@电话前面有Url.Action符号,因为如果不这样做,它将无法正确解析,我注意到你没有在你的问题中有它。

编辑:删除;因为Url.Action不是声明。

答案 1 :(得分:8)

也许我不明白你的问题在哪种情况下请纠正我,但不能简单地说:

@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })

答案 2 :(得分:1)

这可能是正确的:

href="@(action)"> @page