我目前有以下表格中的链接:
<a href="javascript:changeNumbers('Numbers', '@Url.Action("ChangeNumbers")')">Change</a>
为了适应我正在添加此链接的网站的外观,我想将其更改为按钮输入,如下所示:
<input type="button" value="Change" onclick="changeNumbers('Numbers', '@Url.Action("ChangeNumbers")')" />
但是,我遇到了第二种形式的问题:@Url.Action("ChangeNumbers")
周围的单引号被标记为Unterminated string constant
。任何人都可以告诉我我做错了什么以及如何解决它?
修改
我没有想到只是尝试页面 - 它看起来像第二种形式。所以现在我的问题是 - 为什么Visual Studio将此标记为不正确?
答案 0 :(得分:1)
你本身并没有做任何“不正确”的事情,只是Razor并不完美,而引号内的引语往往会让它变得怪异。
一个快速解决方法是将URL存储在变量中,然后使用变量:
@{ var url = Url.Action("ChangeNumbers"); }
<input type="button" value="Change" onclick="changeNumbers('Numbers', '@url')" />
但是,更好的解决方法是根本不使用onclick
属性。把它放在它所属的地方:在JS。
<script>
$('#myButton').on('click', function () {
changeNumbers('Numbers', '@Url.Action("ChangeNumbers")');
});
</script>
上面使用的jQuery,因为它默认包含在MVC中
答案 1 :(得分:0)
我发现要在这种情况下让Visual Studio感到满意,最简单的方法就是将<input />
元素更改为<button></button>
元素,错误将自行解决:< / p>
<button type="button" onclick="changeNumbers('Numbers', '@Url.Action("ChangeNumbers")')">Change</button>
否则,要继续使用<input />
,需要将标记更改为以下内容:
<input type="button" value="Change" onclick="@("changeNumbers('Numbers', '" + Url.Action("ChangeNumbers") + "')")" />