0

我正在尝试创建一个模式来告诉用户他们的提交已成功提交。这工作得很好,但唯一的问题是我必须声明我的每个属性并为其分配一个值,然后在 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) { }
                       });
}
4

1 回答 1

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 绑定到表单元素并需要将它们发布回服务器,这将很有用。

于 2013-05-23T18:29:12.790 回答