Asp.net mvc 在asp.net MVC3中提交ajax表单后更新div内容

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表单更新目的时,如果管理员密码无效,我想显示验证消息错误;如果modelstate有效,我想加载myDiv内容,并向用户提供成功的更新消息

删除
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"}
在out
ajax(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"}