如何在MVC中绑定我的post方法控制器的响应数据

时间:2013-09-25 16:15:13

标签: c# jquery asp.net-mvc knockout.js

给定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上的文本绑定。

提前谢谢你!

2 个答案:

答案 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