zoukankan      html  css  js  c++  java
  • 爱上MVC3系列~当Ajax.Beform不能满足我们的要求时...

    mvc架构中提供了Html.BeginForm与Ajax.BeginForm,主要实现同步提交表单与异步提交表单,对于同步提交与传统的方式没有区别,而异步表单MVC自己进行了封装(可以看我的文章了解两种方式的表单提交),使我们很轻松的完成异步提交,而如果你的视图比较复杂,使用AJAX.BeginForm可能就显得不可供了,有时需要修改异步回调的细节,有时需要返回特定的消息,而这时你必须要手动写异步表单了,今天主要来说一下JQ实现的异步表单提交。效果:

    JS提交表单代码:

     1 <script type="text/javascript">
     2     function submitForm() {
     3         $.ajax({
     4             type: 'POST',
     5             url: '@Url.Action("AJAXReview", "Common")',
     6             data: $("#form1").serialize(),
     7             success: function (data) {
     8                 if (data.res)
     9                     alert("提交成功");
    10                 else
    11                     alert("提交失败,失败信息为:" + data.info);
    12             }
    13         })
    14     }
    15 </script>

    View:

     1 @using (Html.BeginForm("Review", "Common", FormMethod.Post, new
     2 {
     3     id = "form1"
     4 }))
     5 {
     6     <fieldset>
     7         <legend>评论 </legend>
     8         <ul>@Html.ValidationSummary(true)
     9             @Html.HiddenFor(i => i.ObjID)
    10             @Html.HiddenFor(i => i.ObjType)
    11             <li></li>
    12             <li>标题:@Html.TextBoxFor(i => i.Title)</li>
    13             <li>@Html.ValidationMessageFor(i => i.Title)</li>
    14             <li>内容:@Html.TextAreaFor(i => i.Content)</li>
    15             <li>@Html.ValidationMessageFor(i => i.Content)</li>
    16         </ul>
    17     </fieldset>
    18     <input type="button" onclick="submitForm()" value="提交" />
    19 }

    Model:

     1   /// <summary>
     2   /// 评论对象
     3   /// </summary>
     4   public class Review
     5   {
     6     public long ID { get; set; }
     7     public int ObjType { get; set; }
     8     public long ObjID { get; set; }
     9     [Required]
    10     public string Title { get; set; }
    11     [Required]
    12     public string Content { get; set; }
    13     [Required]
    14     public DateTime CreateDate { get; set; }
    15   }

    Controller:

     1    /// <summary>
     2     /// 异步评论视图
     3     /// </summary>
     4     /// <param name="objID"></param>
     5     /// <param name="objType"></param>
     6     /// <returns></returns>
     7     public ActionResult AJAXReview(int? objID, int? objType)
     8     {
     9       return View(new Review
    10       {
    11         ObjID = objID ?? 0,
    12         ObjType = objType ?? 1,
    13         Content = "",
    14         Title = "",
    15       });
    16     }
    17     [HttpPost]
    18     public JsonResult AJAXReview(Review entity)
    19     {
    20       JsonResult js = new JsonResult();
    21       js.Data = new { res = true };
    22       if (ModelState.IsValid)
    23       {
    24         //相关逻辑
    25       }
    26       else
    27       {
    28         js.Data = new { res = false, info = "请认真填写表单!" };
    29       }
    30       return js;
    31     }

    恩,这样可以实现的效果如图:

    您可以对页面提示的效果进行改进,这对于开发者来说是容易的。

  • 相关阅读:
    mysql修改时区time_zone
    magento的布局(layouts)、模块(block)、模板(templates)
    唯品会消息网关的架构定位
    Java应用一般架构
    maven打包命令
    端口查看与封杀
    java程序优化
    高并发下竞争的资源
    java中的多线程高并发与负载均衡的用途
    Web负载均衡的几种实现方式
  • 原文地址:https://www.cnblogs.com/lori/p/2802331.html
Copyright © 2011-2022 走看看