Asp.net mvc 在asp.net MVC3中提交ajax表单后更新div内容
在提交上述ajax表单更新目的时,如果管理员密码无效,我想显示验证消息错误;如果modelstate有效,我想加载myDiv内容,并向用户提供成功的更新消息删除Asp.net mvc 在asp.net MVC3中提交ajax表单后更新div内容,asp.net-mvc,razor,updatepanel,asp.net-mvc-validation,asp.net-mvc-ajax,Asp.net Mvc,Razor,Updatepanel,Asp.net Mvc Validation,Asp.net Mvc Ajax,在提交上述ajax表单更新目的时,如果管理员密码无效,我想显示验证消息错误;如果modelstate有效,我想加载myDiv内容,并向用户提供成功的更新消息删除ajax.beginHTML帮助程序,并执行一些手写的jQuery代码。你可以做任何形式的定制 我会像这样保留您的标记(删除AjaxForm,使用普通表单声明,添加css类名以提交按钮) 它所做的是,当用户使用该CSS类单击按钮时,它将序列化容器表单并将其发送到操作方法。然后action方法完成它的工作,如果验证失败,它将以下面的格式向客
ajax.begin
HTML帮助程序,并执行一些手写的jQuery代码。你可以做任何形式的定制
我会像这样保留您的标记(删除AjaxForm,使用普通表单声明,添加css类名以提交按钮)
它所做的是,当用户使用该CSS类单击按钮时,它将序列化容器表单并将其发送到操作
方法。然后action方法完成它的工作,如果验证失败,它将以下面的格式向客户端发送一个JSON
[HttpPost]
public ActionResult UpdatePurpose(string PurposeID,string Description, string Passwd1)
{
if (Request.IsAjaxRequest())
{
if (!Membership.ValidateUser(User.Identity.Name, Passwd1))
{
return Json( new { Status="Error",
ErrorMessage="Invalid Admin Password"});
}
if (ModelState.IsValid)
{
var id = Convert.ToByte(PurposeID);
var pur = db.Purposes.Where(p => p.PurposeID == id).SingleOrDefault();
pur.Description = Description;
db.SaveChanges();
return Json( new { Status="Success"});
}
}
return View();
}
如果没有问题,它将执行DB更新并以这种格式将JSON发送回客户端
{ "Status": "Errorr", "ErrorMessage": "Invalid Admin Password"}
在outajax(POST)
函数的回调中,我们正在检查JSON
中的Status
的值,并向用户显示适当的消息
简单干净:)谢谢。。但是我将如何更新div(mydiv)内容呢?。我想问,如果purpose更新了,那么我如何才能只重新加载该div内容。@user1506422:您可以在JSON响应中设置要更新的值,然后从中读取并在div中设置,如
$(“#yourDivId”).html(data.Something)
。或者进行jQuery加载调用以重新加载部分视图。我们是否可以使用上述post方法突出显示特定字段的错误,因为mvc验证错误会在验证失败时将文本框突出显示为红色。通过使用$.post()函数,我无法在服务器端获取上载的文件。我在表单中添加了enctype。我将如何检索上传的文件。对于文件上传,您可能需要一些jquery插件,如uplodify。普通的ajax post无法发送文件
[HttpPost]
public ActionResult UpdatePurpose(string PurposeID,string Description, string Passwd1)
{
if (Request.IsAjaxRequest())
{
if (!Membership.ValidateUser(User.Identity.Name, Passwd1))
{
ModelState.AddModelError("", "Invalid Admin Password");
}
if (ModelState.IsValid)
{
var id = Convert.ToByte(PurposeID);
var pur = db.Purposes.Where(p => p.PurposeID == id).SingleOrDefault();
pur.Description = Description;
db.SaveChanges();
ViewBag.Result = "Data Updated Successfully.";
return View();
}
}
return View();
}
<div class="profile">
<form>
@Html.Hidden("PurposeID")
<table>
<tr>
<td>Purpose</td>
<td>:</td>
<td> width="30%">@Html.TextBox("Description")</td>
</tr>
<tr>
<td>Admin Password</td>
<td>:</td>
<td>@Html.Password("Passwd1")</td>
</tr>
</table>
<input type="submit" value="submit" class="btnSavePurpose" />
<script type="text/javascript">
$(function(){
$(".btnSavePurpose").click(function(e){
e.preventDefault();
var item=$(this);
$.post("@Url.Action("UpdatePurpose","Admin")",
item.closest("form").serialize(), function(data){
if(data.Status=="Success")
{
//Let's replace the form with messsage
item.closest(".profile").html("Updated Successfully");
}
else
{
alert(data.ErrorMessage);
}
});
});
});
</script>
[HttpPost]
public ActionResult UpdatePurpose(string PurposeID,string Description, string Passwd1)
{
if (Request.IsAjaxRequest())
{
if (!Membership.ValidateUser(User.Identity.Name, Passwd1))
{
return Json( new { Status="Error",
ErrorMessage="Invalid Admin Password"});
}
if (ModelState.IsValid)
{
var id = Convert.ToByte(PurposeID);
var pur = db.Purposes.Where(p => p.PurposeID == id).SingleOrDefault();
pur.Description = Description;
db.SaveChanges();
return Json( new { Status="Success"});
}
}
return View();
}
{ "Status": "Errorr", "ErrorMessage": "Invalid Admin Password"}
{ "Status": "Success"}