2011-11-17 56 views
0

說,比如我已經在asp.net mvc的形式以下按鈕3應用:如何在ASP.NET MVC的按鈕的自定義屬性中獲得的價值

<input type="submit" name="command" value="Click me" data-custom="D" /> 

我知道如何從按鈕獲取值..但是,我是否在操作方法中獲取數據自定義attr值?非常感謝你!!

編輯:

我要指出,我不能使用JavaScript在所有的,因爲這是網站對於不支持JavaScript的設備的移動版本..

回答

2

但是做我在動作方法中獲取數據自定義attr值?

不,你不知道。 HTML規範中沒有任何內容表明在提交表單時應將數據屬性發送到服務器。所以,如果你想獲得這個價值,你將需要使用JavaScript。一種技術是訂閱表單的提交事件,然後自動向該表單中注入隱藏字段,該表單將從提交按鈕的data-*屬性填充。這樣該值將被髮送到服務器。

但是由於我懷疑你要在這裏實現的是,你有多個提交按鈕,你想知道你的控制器動作中點擊了哪個按鈕。在這種情況下,你可以使用以下命令:

<button type="submit" name="btn" value="S">Save</button> 
<button type="submit" name="btn" value="D">Delete</button> 
... 

,然後讓你的控制器動作,像是叫btn參數。

但是我個人更喜歡使用單獨的動作,否則它會使控制器動作非常醜陋,因爲它會包含很多if語句。這裏有一個nice blog post我會邀請你去結賬。

+0

我更新了我的問題。我不允許使用任何JavaScript .. – Dragan

+0

BINGO !!我不知道你可以這樣設置按鈕的文字!非常感謝Darin。 Pozdrav od Makedonija :) - 我會在4分鐘內將您的答案標記爲正確。所以zdravje – Dragan

0

自定義屬性不會通過get或post傳遞;只有值才能做到。

您可以在提交之前從客戶端抓取自定義屬性值(例如使用jQuery .attr()函數)並將其添加到表單數據中。

+0

我正在構建一個移動應用程序,它應該支持啓用JavaScript的設備以及不支持JavaScript的舊設備。我已經使用jquery mobile開發了javascript版本。但是我不允許在這個項目中使用jquery。我知道如何通過JavaScript獲得該值..任何想法? – Dragan

+0

爲什麼不是隱藏的輸入?

0

據我所知,你不能直接從數據中獲取數據-...。你可以寫javascript來獲得這個值。

+0

我更新了我的問題,我不允許使用任何javascript – Dragan

0

只有表格元素的值和名稱張貼在form內,並且任何data-*都不能傳遞。

您可以考慮使用JavaScript的解決方法。這個想法是以某種方式將data-custom值與您的value屬性合併。

$("input[type=textbox][data-custom]").each(function(index, value) { 
    $(value).attr("value", $(value).attr("value") + "$$$" + $(value).attr("data-custom")); 
}); 

從你的操作方法,使用data.split("$$$")[1]得到data-custom

希望這會有所幫助