0

我目前有以下形式的链接:

<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 将其标记为不正确?

4

2 回答 2

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 中

于 2013-02-26T19:01:32.163 回答
0

我发现要让 Visual Studio 在这种情况下满意,最简单的方法就是将<input />元素更改为<button></button>元素,错误就会自行解决:

<button type="button" onclick="changeNumbers('Numbers', '@Url.Action("ChangeNumbers")')">Change</button>

否则,要继续使用<input />标记将需要更改为以下内容:

<input type="button" value="Change" onclick="@("changeNumbers('Numbers', '" + Url.Action("ChangeNumbers") + "')")" />
于 2013-06-11T22:40:30.250 回答