双引号之间的剃刀代码

Tho*_*mas 7 asp.net-mvc templating razor asp.net-mvc-3

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

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

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

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

Bui*_*ted 19

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

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

该代码将正常工作 - 只要确保你@Url.Action调用前有符号,因为如果你没有它将无法正确解析,我注意到你的问题没有.

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

  • 需要注意的是:如果你的属性中需要一个常量前缀与Razor表达式相结合,你需要在@ char之后添加括号,否则Razor会将其视为电子邮件地址.示例:`id ="prefix @(Model.Id)"` (4认同)

Dar*_*rov 8

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

@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })
Run Code Online (Sandbox Code Playgroud)