当我在javascript中调试时,我看到$(“#widgetIds”)的值.val()是一个int值的数组,如[1,2,3,4]。当它命中控制器时,widgetIds List为null。 我试过了:
<string>
注意:我正在使用此multiselect控件。 optgroups的原因是多选中的分离。
的JavaScript
function ProcessButtonClick(){
$.post(processWidgetsUrl, { widgetIds: $("#widgetIds").val() });
}
查看
<select id="widgetIds" name="widgetIds" multiple="multiple">
<optgroup label="Big Widgets">
@foreach (var widget in Model.Widgets.Where(d => d.WidgetCategoryId == 1))
{
<option value="@widget.Id">@widget.DisplayName</option>
}
</optgroup>
<optgroup label="Little Widgets">
@foreach (var widget in Model.Widgets.Where(d => d.WidgetCategoryId == 3))
{
<option value="@widget.Id">@widget.DisplayName</option>
}
</optgroup>
<optgroup label="Red Widgets">
@foreach (var widget in Model.Widgets.Where(d => d.WidgetCategoryId == 4))
{
<option value="@widget.Id">@widget.DisplayName</option>
}
</optgroup>
<optgroup label="Blue Widgets">
@foreach (var widget in Model.Widgets.Where(d => d.WidgetCategoryId == 5))
{
<option value="@widget.Id">@widget.DisplayName</option>
}
</optgroup>
<optgroup label="Round Widgets">
@foreach (var widget in Model.Widgets.Where(d => d.WidgetCategoryId == 6))
{
<option value="@widget.Id">@widget.DisplayName</option>
}
</optgroup>
<optgroup label="Square Widgets">
@foreach (var widget in Model.Widgets.Where(d => d.WidgetCategoryId == 7))
{
<option value="@widget.Id">@widget.DisplayName</option>
}
</optgroup>
</select>
控制器
public virtual ActionResult ProcessWidgets(List<int> widgetIds)
{
return Json(_widgetComponent.DoStuff(widgetIds));
}
答案 0 :(得分:1)
您需要告诉服务器您正在向它发送Json,然后ASP.NET MVC将知道如何在将数据发送到控制器之前正确解释数据:
function ProcessButtonClick(){
$.post(processWidgetsUrl, { widgetIds: $("#widgetIds").val() }, null, "json");
}
您可能需要将数组转换为正确的JSON How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?