2013-02-26 21 views
0

目前,我有以下表格的链接:无法在按钮的onclick去接受

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

回答

1

你什么都没有做“错误地”本身,它只是剃刀是不完美的,事情就是这样引号中的报价往往会导致其发飙。

一个快速的解决将是该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默认

+0

第一个不会改变我收到的警告 - 所以它似乎不是引号。第二个解决它。我会说,虽然 - 这将使其明显,我不是一个JavaScript开发 - 我不喜欢,因为你必须看看在更多的地方要弄清楚这是怎么回事分离的事件从标签了。 – zimdanen 2013-02-26 19:16:14

+0

分离的担忧比没有向下滚动页面一点或打开另外一个文件更重要。 MVC本身将多个功能分离为独立的单元。你不会认为我们应该回到1999年大约PHP风格的代码和HTML大杂烩因为当时“一切都在一个地方”,你会吗? – 2013-02-26 19:35:23

+0

不,我不会。但是,即使使用MVC,您通常也可以知道数据来自哪里或去哪里。但我接受你的前提,正确的做法是把它分开。 – zimdanen 2013-02-26 19:47:37

0

我发现,做的Visual Studio高兴在这种情况下,最容易做的事情是简单地改变<input />元素一个<button></button>元素和错误会自行解决:

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

否则,继续使用<input />标记将需要更改到t他如下:

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