【发布时间】:2011-11-27 17:07:37
【问题描述】:
我正在尝试使用 MVC3 和 JSON 进行模型绑定,但我没有运气...无论我做什么,我似乎都在服务器上获得了 null 模型。
方法签名:
public ActionResult FilterReports(DealSummaryComparisonViewModel model)
Javascript 更新:
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('#filter-reports').click(filterReports);
});
function filterReports() {
var filters = {
SelectedRtoId: $('#SelectedRtoId').val(),
SelectedPricingPointId: $('#SelectedPricingPointId').val(),
SelectedLoadTypeId: $('#SelectedLoadTypeId').val(),
SelectedBlockId: $('#SelectedBlockId').val(),
SelectedRevisionStatusId: $('#SelectedRevisionStatusId').val()
}
var dealSummaries = { SelectedItemIds: $('#SelectedItemIds').val() }
var model = { ReportingFilters: filters, DealSummaries: dealSummaries }
$('#selected-items select option').attr("selected", "selected");
$.ajax({
url: '@Url.Action("FilterReports")',
data: model,
contentType: 'application/json',
dataType: 'json',
success: function (data) {
alert(data);
}
});
}
</script>
型号:
public class DealSummaryComparisonViewModel
{
public ReportingFiltersViewModel ReportingFilters { get; set; }
public LadderListViewModel DealSummaries { get; set; }
}
public class LadderListViewModel
{
public MultiSelectList AvailableItems { get; set; }
public int[] SelectedItemIds { get; set; }
public MultiSelectList SelectedItems { get; set; }
}
public class ReportingFiltersViewModel
{
public int? SelectedRtoId { get; set; }
public ICollection<Rto> Rtos { get; set; }
public int? SelectedPricingPointId { get; set; }
public ICollection<PricingPoint> PricingPoints { get; set; }
public int? SelectedLoadTypeId { get; set; }
public ICollection<LoadType> LoadTypes { get; set; }
public int? SelectedBlockId { get; set; }
public ICollection<Block> Blocks { get; set; }
public int? SelectedRevisionStatusId { get; set; }
public ICollection<RevisionStatus> RevisionStatuses { get; set; }
public bool? DealStatus { get; set; }
}
模型在客户端看起来不错:
{"ReportingFilters":{
"SelectedRtoId":"5",
"SelectedPricingPointId":"20",
"SelectedLoadTypeId":"55",
"SelectedBlockId":"21",
"SelectedRevisionStatusId":"11"
},"DealSummaries":{
"SelectedItemIds":["21","22","23","24","25"]
}}
那么为什么我在控制器上什么也没得到呢?这两天给我带来了麻烦,所以请帮忙!谢谢!!
更新 我已将我的 javascript 部分更新为我当前使用的内容。此部分现在将模型返回到带有 ReportingFilers 和 DealSummaries 对象的控制器,但其中的所有值都是空的。
这可能与作为字符串的值有关吗?如果是这样,我该如何解决这个问题?
【问题讨论】:
-
方法是什么样的?方法的输入参数是否命名为model?
-
你能把你的动作签名贴在这里吗?
-
你试过调试MVC吗? Microsoft 符号服务器上有源代码,因此您应该能够在 JSON 类(JsonModelBinding 或类似)中放置断点以查看发生了什么。您还应该确保您的 JSON 数据的发布内容类型也是正确的。
标签: c# jquery asp.net json asp.net-mvc-3