2013-02-26 49 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") + "')")" />