Asp.net mvc 双引号之间的代码
在Razor视图引擎模板中,我希望执行以下操作:我希望在html属性的双引号之间放置一些代码。问题是我要插入的代码本身包含一些双引号Asp.net mvc 双引号之间的代码,asp.net-mvc,asp.net-mvc-3,razor,templating,Asp.net Mvc,Asp.net Mvc 3,Razor,Templating,在Razor视图引擎模板中,我希望执行以下操作:我希望在html属性的双引号之间放置一些代码。问题是我要插入的代码本身包含一些双引号 <a href="Url.Action("Item", new { id = Model.Item.Id, page = page });">@page</a> 你可以很容易地看到事情是如何变得非常糟糕的:-)我知道我可以计算变量中的链接,然后使用它,但我不想: @{ var action = Url.Action("Question
<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>
@{var action=Url.action(“问题”,新的{id=Model.Question.id,page=page});}
你不需要用剃须刀逃跑或做任何事情。Razor足够聪明,可以知道引号何时在属性中,因为在解析它时,您是在html之外转义
<a href="@Url.Action("Item",
new { id = Model.Item.Id, page = page })">@page</a>
该代码可以正常工作-只需确保在Url.Action
调用前面有@
符号,因为如果不这样做,将无法正确解析,我注意到您的问题中没有该符号
编辑:删除;作为Url.Action不是一个声明。也许我不理解你的问题,在这种情况下,请纠正我,但你不能简单地:
@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page })
这可能是正确的:
href="@(action)"> @page
注意:如果在属性中需要一个常量前缀与Razor表达式相结合,则需要在@char后面添加括号,否则Razor会将其视为电子邮件地址。示例:
id=“prefix@(Model.id)”
Sad您被否决了-我的问题的解决方案是添加@(xxx)而不是不使用()-我猜这就是您所说的-将“action”内容放在()中-这正好解决了我的问题,@xxx在()中不起作用