您可以創建一個jQuery函數來爲您完成大部分工作。我用這個功能來編程添加隱藏的輸入:
jQuery的功能:
// This must be applied to a form (or an object inside a form).
jQuery.fn.addHidden = function (name, value) {
return this.each(function() {
var input = {};
if (Object.prototype.toString.call(value) === '[object Array]') {
var r = /\[\]/;
// Pass an array as a series of separate hidden fields.
for (var i = 0; i < value.length; i++) {
input = $("<input>").attr("type", "hidden")
.attr("name", name.replace(r, '[' + i + ']'))
.val(value[i]);
$(this).append($(input));
}
} else {
input = $("<input>").attr("type", "hidden")
.attr("name", name)
.val(value);
$(this).append($(input));
}
});
};
用法:
對於標準形式的項目或簡單的參數在MVC theHidden as String
:
$('#myform').addHidden('theHidden', 'jam');
=> <input type="hidden" name="theHidden" value="jam">
對於MVC ID As List(Of Integer)
列表參數:
$('#myform').addHidden('ID', [1,2,5]);
=> <input type="hidden" name="ID" value="1">
<input type="hidden" name="ID" value="2">
<input type="hidden" name="ID" value="4">
對於複雜類型的MVC其中有一個列表屬性model As ComplexType
:
$('#myform').addHidden('Customer[].CustomerID', [1,2,5]);
=> <input type="hidden" name="Customer[0].CustomerID" value="1">
<input type="hidden" name="Customer[1].CustomerID" value="2">
<input type="hidden" name="Customer[2].CustomerID" value="5">
Class ComplexType
Property Customer As List(Of CustomerDetail)
End Class
Class CustomerDetail
Property CustomerID As Integer
End Class
不知道這有什麼關係(它在你的文章中甚至可能是一個錯字),但你需要確保你在元素創建期間正確地關閉標籤:'$(「「)' - 你離開了你的角色砍刀。 – prodigitalson 2010-04-08 15:37:11
@prodigitalson謝謝,但沒有區別 – vanzylv 2010-04-08 15:40:56
也...你是否在$('#thehidden')的返回值上得到了undefined,或者只返回了'$('#thehidden')。val()'? – prodigitalson 2010-04-08 15:50:43