给定Controller View和JS如何绑定从post动作控制器返回的JSON数据。这是可能的。
控制器
[HttpPost]
public ActionResult PBHEP(string PC,string FC)
{
/some data calculations
Output output = new Output() { CIR = CIR_, Recharge = Recharge_, GW_Withdrawal= GW_Withdrawal_ };
return Json(output);
}
JS
self.submit_conditions = function () {
var PC_data = ko.toJSON(self.present_conditions());
var FC_data = ko.toJSON(self.future_conditions());
$.post("/Home/PBHEP", { "PC": PC_data, "FC": FC_data }, function (data) { alert((data));},'json');
}
在此之后,当控制器返回Json数据“输出”时,我看到在我的开发工具中,我的响应来自我网络中的POST {“CIR”:8.31779,“Recharge”:4.28381,“GW_Withdrawal “:32.27184} 我如何在我的JS中使用它,然后将其用作我的UI上的文本绑定。
提前谢谢你!
答案 0 :(得分:0)
假设您的模型将这些输出元素定义在哪里......
function vm(){
var self = this;
self.CIR = ko.observable();
self.Recharge = ko.observable();
self.GW_Withdrawl = ko.observable();
//remaining stuff
self.submit_conditions = function(){
//usual stuff
$.post(svcUrl, data, function(data){
self.CIR(data.CIR);
self.Recharge(data.Recharge);
self.GW_Withdrawl(data.GW_Withdrawl);
});
};
}
ko.applyBindings(new vm());
现在按照通常的方式绑定它,例如
<label>Recharge:</label><label data-bind="text: Recharge"></label>
答案 1 :(得分:0)
我想如果您使用的是ViewModel,您可以在knockout和asp.net mvc上创建相同的viewmodel,并正常绑定数据。
在您的控制器上:
var model = new YourViewModel();
// fill data to return
return Json(model);
返回javascript后,您可以使用knockout mapping plugin