可能有更好的方法。 在我的表单中,用户可以输入街道名单列表,如下所示:
<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();
});
在视图模型上,StreetNames定义为
public string[] StreetNames { get; set; }
问题是当Controllor操作方法接收到视图模型时,只填充第一个项目,并且它包含用逗号分隔的整个数组。 我如何解决这个问题,以便我发布一个阵列呢?
答案 0 :(得分:0)
您可以使用ajax发布您的请求 您可以使用Ajax,而您只需将ajax请求中的传统设置为值true
$.ajax({
type: "POST",
url: "youraction",
dataType: "json",
traditional: true,
data: {
//your data
}
});
答案 1 :(得分:0)
我最终做的是发布一个带分隔符的字符串,我用它将字符串拆分为服务器端的数组。看起来它是唯一没有重写并使用AJAX的解决方案。