【问题标题】:post viewmodel using ajax to controller error使用 ajax 将视图模型发布到控制器错误
【发布时间】:2013-03-25 08:19:49
【问题描述】:

我正在尝试使用淘汰模板绑定来绑定问题列表。我成功获取数据和模板绑定。但是在下一个按钮单击事件上,我试图将视图模型发送到控制器,但它在控制器中给出了空值

我的jquery代码是这样的

        $(document).ready(function () {
          $.ajax({
               type: "GET",
                contentType: "application/json",
                url: "/Render/LoadSurveyQuestions?sg=" + getUrlVars()["g"] + "&stg=" +      getUrlVars()["sig"],
                success: function (result) {
                var lstQns = JSON.parse(result);
                viewmodel = ko.mapping.fromJS(lstQns);
                ko.applyBindings(viewmodel, document.getElementById("tblQuestions"));
             }
           });

        $("#btnNext").click(function () { 
              $.ajax({
                     async: true,
                     cache: false,
                     type: 'post',
                     url: "/Render/SaveSurveyQuestionOptions", 
                     data: ko.toJSON(viewmodel),
                     success: function (result) {
                        }
                      }); 
                 });
                });



             function getUrlVars() {
                     var vars = {};
                     var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {
                        vars[key] = value;
                         });
                  return vars;
                         }

控制器是这样的

        [HttpPost]
        public void SaveSurveyQuestionOptions(List<Question> listOfQuestions)
         {
             if (listOfQuestions.Count > 0)
             {
               Question objQuestion = new Question();
                osurveymanager.InsertQuestionAnswers(objQuestion); 

              }
         }  


Here i am getting listOfQuestions as null value

请帮帮我 提前致谢

【问题讨论】:

    标签: jquery knockout.js knockout-mapping-plugin


    【解决方案1】:

    问题是您从客户端发送 JSON 字符串,

    $("#btnNext").click(function () { 
        $.ajax({
         async: true,
         cache: false,
         type: 'post',
         url: "/Render/SaveSurveyQuestionOptions", 
         data: ko.toJSON(viewmodel),   //toJSON converts your viewModel to JSON string
         success: function (result) {
                  }
     }); 
    

    所以你应该在服务器端的字符串变量中接受它,所以你的控制器操作应该是:

        [HttpPost]
        public void SaveSurveyQuestionOptions(string listOfQuestions)
        {
             var Questions = JsonConvert.DeserializeObject(listOfQuestions);
             //Now here Questions varibale contains the list Of question passed.. 
             //from the client side
        }  
    

    试试这个,如果有帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 2019-10-31
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多