我从下拉菜单中选择一个项目,然后点击添加=> ajax调用一个返回JsonResult的方法,这一切都好。然后这个数据应该发送到服务器端的另一个函数PartialViewResult:public PartialViewResult _SkupinaRow(skupinaRow skupinaRow),它生成一个带有一些文本框和标签的新tr。我的问题是没有绑定。我在_SkupinaRow(skupinaRow skupinaRow)中调试时得到Null
我定义了以下域模型:
public class skupinaRow
{
public BONUSMALUS bonusmalus { get; set; } //items
public KOLEDAR koledar { get; set; } //calendar
}
部分视图:
@model ObracunPlac.ViewModel.skupinaRow
@Html.HiddenFor(x => x.bonusmalus.bon_id)
.....
部分查看代码:
public PartialViewResult _SkupinaRow(skupinaRow skupinaRow)
{
return PartialView("_SkupinaRow", skupinaRow);
}
Ajax Call:
$("#addItemPrihodki").live("click", function () {
var id = $("#prihodkidodaj option:selected").val()
var skupinaRow = {
bonusmalus:{},
koledar:{}
}
jQuery.getJSON("/Placa/getBonusMalus/?id=" + id, function (data) {
console.log("JSON Data: " + data.koledar.kol_id);
skupinaRow.koledar.kol_id = data.koledar.kol_id, //ok
skupinaRow.bonusmalus.bon_id = data.bonusmalus.bon_id, //ok
//alert(JSON.stringify(GetBonusMalusModel($("#bonusdodaj option:selected").val())));
alert(JSON.stringify(data));
// alert(skupinaRow.serialize());
$.ajax({
url: "../_skupinaRow",
cache: false,
data: JSON.stringify(skupinaRow),
//data: JSON.stringify(data),
datatype: JSON,
success: function (html) {
$("#editorRowPrihodki table tr#dodajNov").before(html);
}
,
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('error'+"+++"+textStatus+"--- "+errorThrown);
},
});
});
return false;
});
public JsonResult getBonusMalus(int id)
{
KOLEDAR koledar = db.KOLEDAR.Single(r => r.kol_id == KoledarID);
BONUSMALUS bm = db.BONUSMALUS.Single(r => r.bon_id == id);
skupinaRow model = new skupinaRow
{
koledar =koledar,
bonusmalus = bm
};
// return Json result using LINQ to SQL
return new JsonResult
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = model
};
}
调试图片:https://www.dropbox.com/s/189q080irp0ny77/1.jpg
当我有一个模型bonusmalus但现在我有两个所以我创建了modelView。
如何使用强类型SkupinaRow将ViewModel-SkupinaRow绑定到部分视图?
答案 0 :(得分:0)
如果您只使用AJAX将其值转换为json?然后你可以使用这种方法
将具有正常回发的表单设置回控制器中的Action
在你的视图中使用jQuery并在提交表单时写下这个。
$("form").submit(function(){
$("#DropDown_Items").val(JSON.stringify(data));
});
现在您可以在Action方法中使用它。