在MVC中提交表单后呈现模态

时间:2013-05-23 18:25:09

标签: asp.net-mvc jquery

我正在尝试创建一个模式,告诉用户他们的提交已成功提交。这工作得相当好,但唯一的问题是我必须声明我的每个属性并为其赋值,然后在Json方法中我接受所有这些参数然后用它们做一些事情。有没有办法用ViewModel做到这一点?或者任何其他方式,这可以使用ViewModel完成?

控制器:

public Json Send(string var1, string var2)
{
   ...
   if(valid)
       return new Json(true, JsonRequestBehavior.AllowGet);
   else
       return new Json(false, JsonRequestBehavior.AllowGet);
}

的javascript:

function submitData() {
    $.ajax({
                       url: "/Report/Send",
                       type: "POST",
                       dataType: "json",
                       data: { var1 = Model.var1, var2 = Model.var2... },
                       success: function (data) {
                           if(data) {
                               showDialog();
                           }
                           else {
                               $("#errorDiv").load('Report/Error/');
                           }
                       },
                           error: function (somefunction) { }
                       });
}

1 个答案:

答案 0 :(得分:1)

是的,创建一个ViewModel POCO类:

var myJsonResult = new { result: true };
return Json(myJsonResult);

您还可以使用强类型的ViewModel并返回:

var myJsonResult = new CustomResult { result: true };
return Json(myJsonResult);

然后在成功函数中检查该类的属性:

success: function (data) {
                           if(data.result) {
                               showDialog();
                           }
                           else if(!data.result) {
                               $("#errorDiv").load('Report/Error/');
                           }
                       },

编辑:

您可能还想查看jquery的.serialize()方法:

data:  $("#myForm").serialize()

如果您将ViewModel绑定到表单元素并需要将它们发布回服务器,这将非常有用。