2016-10-19 92 views
0

我有一個文本框設置,像這樣:獲取數據-ID提交

 @Html.TextBoxFor(m => m.NewVehCode, new {data_id = "" }) 

當用戶選擇的車輛中,車輛的描述變得文本框的值和車輛代碼(這是我要發送到DB什麼)成爲數據-ID(不完整的代碼,但我這樣設置值):

 $("#NewVehCode").val(vehDescription); 
     $("#NewVehCode").attr("data-id", vehCode); 

這一切工作正常,除了事實,當我提交,MVC抓取文本框的值。

有沒有一種方法可以提交,獲取該文本框的數據ID而不是值?

請注意,我沒有使用.js來收集數據。表單調用一個控制器動作,將模型直接發送到控制器。

+2

表單只提交其成功控件的名稱/值對。它不會發送'data = *'屬性值。如果你想同時提交 –

+0

你提到「選擇」一輛汽車;如果你想提交一輛汽車,你可以添加另一個屬性到你的車型,並將該屬性的值設置爲'vehCode'。爲什麼你不使用帶選項的select元素,而你可以將選項的值作爲ID? – mtaanquist

+0

謝謝斯蒂芬,您的評論幫助我想出了一個解決方案(請參閱我自己的答案)。 – IHS

回答

0

斯蒂芬·馬克的評論讓我觸發此解決方案:

我添加了一個隱藏的文本框使用的車輛代碼,並提出,顯示了描述一個標準的文本框沒有數據綁定文本框。

 <input id="newVehInput" readonly="readonly" class="longInput" type="text"> 
     @Html.TextBoxFor(m => m.NewVehCode, new { style = "display: none"}) 

這樣我可以使用沒有問題的值:

 $("#newVehInput").val(vehDescription); 
     $("#NewVehCode").val(vehCode); 

(將標誌着作爲答案2天)

+0

而不是使用輸入你應該使用隱藏的字段。 –

0

無法提交「數據」屬性的值。我不知道你爲什麼要使用數據屬性(這是一個需求與否,不知道)。但是你可以在窗體中隱藏一個屬性,當用戶選擇一輛車時,以及文本框的數據屬性,更新這個隱藏的值。這個隱藏的值將被提交回表格。

0

一個隱藏的文本框添加到您的HTML,你回來後上提交

在你的模型:

public string Id {get;set;} 

在帶有隱藏類的視圖中渲染它

並與js。

$("#vehicleList").on("change",function(){ 
$("#Id").val($vehCode) 
}) 

當您提交i​​d的值應該在你的模型

0

設置你可以有一個hidden field保持更新的值。

HTML:

<input type="hidden" id="HiddenVehCode" name="HiddenVehCode" Value="0"/> 

JS

$("#HiddenVehCode").val(vehDescription); 

注意:你應該有模型建立,使HiddenVehCode將達到上表的actionMethod提交。類似的,

public int HiddenVehCode {get;set;}