实体类定义:
public class TableModel
{
public int Id { get; set; }
public int Number { get; set; }
public int SeatCount { get; set; } //座位数量 public TableCategoryModel Category { get; set; } //桌位分类
public StatusDictionaryModel Status { get; set; } //记录桌位的状态
}控制器:
[HttpPost]
public ActionResult TableAdd(TableModel model)
{
TableModel m = null;
if (ModelState.IsValid)
{
m = bllTable.AddTable(model);
} return Json(m);
}
参数直接借用TableModel,模型实体具有导航属性,这样老是,前天传入的json对象,反序列化为TableModel对象时,导航实体的属性为null.
是不是这样是不可行的,也是没必要的?
我不想重新封装一个类,只接收分类Id,而不是导航实体的这样的一个对象类,直接借用这个实体类方式不可以吗?还是压根就不应该这样使用。
前台:
//添加桌位
function addTableToDB() {
var table_number = $.trim($("#dlg input[name=table_number]").val());
var table_seats = $.trim($("#dlg input[name=table_seats]").val());
var table_category_id = $("#table_category").combobox("getValue");
var table_status_id = $("#table_status").combobox("getValue"); var model = {
Number: table_number,
SeatCount: table_seats,
Category: getTableCategory(table_category_id),
Status: getTableStatus(table_status_id)
}; $.ajax({
url: "/Table/TableAdd",
type: "POST",
data: model,
dataType: "json",
success: function (req) {
$("#dlg").dialog("close");
alert("操作成功!");
}
});
}
public class TableModel
{
public int Id { get; set; }
public int Number { get; set; }
public int SeatCount { get; set; } //座位数量 public TableCategoryModel Category { get; set; } //桌位分类
public StatusDictionaryModel Status { get; set; } //记录桌位的状态
}控制器:
[HttpPost]
public ActionResult TableAdd(TableModel model)
{
TableModel m = null;
if (ModelState.IsValid)
{
m = bllTable.AddTable(model);
} return Json(m);
}
参数直接借用TableModel,模型实体具有导航属性,这样老是,前天传入的json对象,反序列化为TableModel对象时,导航实体的属性为null.
是不是这样是不可行的,也是没必要的?
我不想重新封装一个类,只接收分类Id,而不是导航实体的这样的一个对象类,直接借用这个实体类方式不可以吗?还是压根就不应该这样使用。
前台:
//添加桌位
function addTableToDB() {
var table_number = $.trim($("#dlg input[name=table_number]").val());
var table_seats = $.trim($("#dlg input[name=table_seats]").val());
var table_category_id = $("#table_category").combobox("getValue");
var table_status_id = $("#table_status").combobox("getValue"); var model = {
Number: table_number,
SeatCount: table_seats,
Category: getTableCategory(table_category_id),
Status: getTableStatus(table_status_id)
}; $.ajax({
url: "/Table/TableAdd",
type: "POST",
data: model,
dataType: "json",
success: function (req) {
$("#dlg").dialog("close");
alert("操作成功!");
}
});
}
Number: table_number,
SeatCount: table_seats,
Category: getTableCategory(table_category_id),
Status: getTableStatus(table_status_id)
};
你这个东东传到控制器只会解析成4个参数啊
你那个接收方法没见过
不能那么用的
后面那个调用方法返回的都是对象,json数据是嵌套的,对应反序列化的导航属性。
var model = {
Number: 12,
SeatCount: 4,
Category: {Id:123,Name:"雅间"},
Status:{Id:3,Name="可用"}
};
类似这样的,chrome调试数据是有的
搜了下overflow上,找到了Model Binder的绑定复杂类型的内容,还得看那个,我还是先用现有知识解决吧,谢了。
contentType: "application/json",可以了,该结贴了。