Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 双引号之间的代码_Asp.net Mvc_Asp.net Mvc 3_Razor_Templating - Fatal编程技术网

Asp.net mvc 双引号之间的代码

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

在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>                                        
@{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在()中不起作用