C# ASP.NET-MVC;将模型传递给$.ajax函数以执行服务器端验证
我需要做服务器端验证,也就是将模型发送到部分视图。我正在使用$.ajax-->post-->json方法发送和处理数据,但无法将验证模型发送到部分视图 ajax方法 })) 剃刀形状C# ASP.NET-MVC;将模型传递给$.ajax函数以执行服务器端验证,c#,jquery,asp.net-mvc,asp.net-ajax,ajaxform,C#,Jquery,Asp.net Mvc,Asp.net Ajax,Ajaxform,我需要做服务器端验证,也就是将模型发送到部分视图。我正在使用$.ajax-->post-->json方法发送和处理数据,但无法将验证模型发送到部分视图 ajax方法 })) 剃刀形状 您将返回类型指定为dataType:“JSON”,但您的方法返回html。既然您立即重定向到另一个视图,那么这有什么意义呢。只需进行正常提交,如果模型无效,则返回视图,否则返回重定向到操作(“SystemCoreHome”、“SystemCore”)Ajax在这里是毫无意义的,您的意思是数据未发布或模型未绑定。从a
您将返回类型指定为
dataType:“JSON”,
但您的方法返回html
。既然您立即重定向到另一个视图,那么这有什么意义呢。只需进行正常提交,如果模型无效,则返回视图,否则返回重定向到操作(“SystemCoreHome”、“SystemCore”)代码>Ajax在这里是毫无意义的,您的意思是数据未发布或模型未绑定。从ajax调用中删除datatype和contenttype属性。@StephenMuecke是对的,这里不需要ajax。要序列化表单数据,只需执行$('#NewFunctionNavigationForm')。serialize()代码>我这样做是为了捕获消息,包括成功、失败或记录已存在。如果您执行正常的post并由于模型错误(或您添加自己的ModelState错误)返回视图,则将显示这些错误(并正确显示,而不只是对话框中的一些任意消息)。当ModelState无效时会发生什么?脚本失败,用户会收到一条令人困惑的“创建记录时出错!”消息。
$('#NewFunctionNavigationForm').submit(function (e) {
e.preventDefault();
var DataToPost = JSON.stringify($('#NewFunctionNavigationForm').serializeObject());
var formURL = $(this).attr("action");
$.ajax({
type: "POST",
url: formURL,
dataType: "JSON",
contentType: "application/json; charset=utf-8",
data: DataToPost,
})
.done(function (data, textStatus, jqXHR) {
if (data.Response == "Success") {
$(this).MyMessageDialog({
_messageBlockID: "_StatusMessage",
_messageContent: "Record Been Created Successfully",
_messageBlockWidth: "300px"
});
$('div#_StatusMessage').on('dialogclose', function (event) {
window.location = "/SystemCore/SystemCoreHome";
});
}
})
.fail(function (jqXHR, textStatus, errorThrown) {
$(this).MyMessageDialog({
_messageBlockID: "_StatusMessage",
_messageContent: "Error In Creating Record! "+ textStatus + " "+ errorThrown,
_messageBlockWidth: "350px"
});
$('div#_StatusMessage').on('dialogclose', function (event) {
window.location = "/SystemCore/SystemCoreHome";
});
});
@using (Html.BeginForm("CreateNewFunctionNavigation", "SystemCore", FormMethod.Post, new { id = "NewFunctionNavigationForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
... my fields here
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default _formButton" />
<input type="button" value="Cancel" class="btn btn-default _formButton" onclick="CancelPage();" />
</div>
</div>
}
[HttpGet]
public ActionResult CreateNewFunctionNavigation()
{
return PartialView("CreateNewNavigation_Partial");
}
[HttpPost]
public ActionResult CreateNewFunctionNavigation(CreateFunctionNavigation_SP_Map model )
{
if(ModelState.IsValid)
{
try
{
_FN_Services_a2.CreateFunctionNavigation(model);
return Json(new { Response = "Success" });
}
catch (DataException ex)
{
ModelState.AddModelError("", "Unable To Create New Function Navigation" + ex);
}
}
else
{
}
return PartialView("CreateNewNavigation_Partial", model);
//return Json(new { Url = Url.Action("CreateNewNavigation_Partial", model) });
} //end