9

在 Razor 视图引擎模板中,我想要执行以下操作:我想在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>                                        
4

3 回答 3

20

您无需使用 Razor 进行逃生或任何操作。Razor 足够聪明,可以知道引号何时包含在属性中,因为您在解析 html 时会转义它。

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

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

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

于 2010-11-22T20:34:29.603 回答
8

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

@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })
于 2010-11-22T22:13:17.760 回答
2

这可能是正确的:

href="@(action)"> @page 
于 2013-12-08T14:06:10.427 回答