可能有更好的方法來做到這一點。 在我的表單中,用戶可以輸入以下街道名稱的列表:mvc/JQuery - 使用數組發佈表單Viewmodel
<div class="row">
<div class="col-md-2">
<label for="StreetName">By Street Name(s) </label>
</div>
<div class="ui-widget col-md-6">
<input id="StreetName" style="width: 500px;">
</div>
</div>
<div class="row">
<div class="col-md-3" style="padding-left: 0; vertical-align: top">
<label for="StreetNameList">Selected Streetnames List:</label>
</div>
</div>
<div class="row">
<div class="col-md-5" style="height: 200px; width: 600px; overflow: auto; border: gray solid 1px; background: whitesmoke">
<div id="StreetNameList" name="StreetNameList" style="height: 200px; width: 600px;"></div>
@Html.HiddenFor(m => m.StreetNames)
</div>
</div>
當用戶點擊提交按鈕時,街道名稱被放入隱藏字段m.StreetNames這是一個字符串數組。 參見
$("#submitdata").click(function() {
var $form = $(this).closest("form");
var streetnames = [];
var streetnamestring;
$.each($("#StreetNameList .street"), function (i, $street) {
streetnames.push($street.innerHTML);
});
$("#StreetNames").val(streetnames);
$form.submit();
});
在視圖模型,街道名稱被定義爲
public string[] StreetNames { get; set; }
的問題是,當Controllor動作方法接收視圖模型,僅被填充的第一項,和它包含的整個數組由逗號分隔。 我如何解決這個問題,讓我發佈一個數組呢?
您顯示的代碼不清晰。你沒有'class =「street」'的任何元素。沒有必要使用隱藏的輸入。如果您有多個輸入用於添加街道名稱(不顯示您已顯示的代碼),那麼只要這些輸入具有正確的'name'屬性,您的屬性將被正確綁定(無需javascript) –