视图控制器传入ajax,使用ajax发布窗体数据从部分视图到控制器使用ajax

public PartialViewResult _CreateSupplier()

{

return PartialView(new Supplier());

}

[HttpPost]

public JsonResult _CreateSupplier(Supplier model)

{

//Validation

return Json(new

{

status = transactionStatus,

modelState = ModelState.GetModelErorrs()

}, JsonRequestBehavior.AllowGet);

}

表单POST jQuery的方法

$('#create-supplier').submit(function (e) {

e.preventDefault();

var $form = $(this);

if (!ModelIsValid($form))

return;

AjaxPost($form.serialize(), '@Url.Action("_CreateSupplier")', function (result) {

if (result.status == 0) {

$form[0].reset();

//Success

var grid = $("#gridSupplier").data("kendoGrid");

grid.dataSource.read();

} else if (result.status == 1)

AddFormErrors($form, result);

else if (result.status == 2)

//error;

});

});

检查模型方法是有效,如果无效,将错误形成

function ModelIsValid(form) {

var validator = $(form).validate(); // obtain validator

var anyError = false;

form.find("input").each(function() {

if (!validator.element(this)) { // validate every input element inside this step

anyError = true;

}

});

if (anyError)

return false; // exit if any error found

return true;

}

function AddFormErrors(form, errors) {

for (var i = 0; i < errors.modelState.length; i++) {

for (var j = 0; j < errors.modelState[i].errors.length; j++) {

var val = $(form).find("[data-valmsg-for='" + errors.modelState[i].key + "']");

if (val.html().length > 0) {

$(form).find("[for='" + errors.modelState[i].key + "']").html(errors.modelState[i].errors[j]);

} else {

val.html('' + errors.modelState[i].errors[j] + '');

}

}

}

}

阿贾克斯POST方法:

function AjaxPost(postData, url, callback) {

$.ajax({

url: url,

type: 'POST',

data: postData,

dataType: 'json',

success: function (result) {

if (callback) callback(result);

}

});

}

而在去年C#泛型方法,检查返回模型状态错误

public static IEnumerable GetModelErorrs(this ModelStateDictionary modelState)

{

return modelState.Keys.Where(x => modelState[x].Errors.Count > 0)

.Select(x => new {

key = x,

errors = modelState[x].Errors.Select(y => y.ErrorMessage).ToArray()

});

}

希望答案有用...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值