亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實例

2024-07-10 13:32:54
字體:
來源:轉載
供稿:網友

有時候,不得不考慮到以下場景問題:

數據庫表字段會頻繁更改擴展,而流行的重業務的js框架過于依賴json數據接口,導致的問題是,數據庫表更改 -> 數據接口更改 -> 前段框架邏輯更改。。。

一不小心就陷入坑坑洼洼。

這樣的話,原來純ASP.NET MVC綁定的方式,還是可以一用的,因為該方式不用再為那么多js代碼煩惱。

不好意思,前面自說自話啊,直接上干貨代碼了————

Ajax.BeginForm

@{ Layout = null; var ajaxOptions = new AjaxOptions {  UpdateTargetId = "updateHolder",  OnBegin = "DeliverableEdit.onBegin",  OnFailure = "DeliverableEdit.onFailure",  OnSuccess = "DeliverableEdit.onSuccess",  OnComplete = "DeliverableEdit.onComplete",  HttpMethod = "Post" };}@using ( Ajax.BeginForm("Save", "DesignDeliverable", null, ajaxOptions, new { @class = "form-horizontal", id = "editForm" }) ) { @Html.HiddenFor(x => x.Id) @Html.HiddenFor(x => x.TaskCode) @Html.HiddenFor(x => x.ShortName) <div class="container-fluid pad-15">  <div class="row">   <div class="col-xs-6">    <div id="updateHolder" style="display:none;"></div>    <div class="form-group">     <label class="col-sm-2 control-label">Title</label>     <div class="col-sm-4">      @Html.TextBoxFor(x => x.Name, new { @class = "form-control", placeholder = "Title" })      @Html.ValidationMessageFor(x => x.Name)     </div>     <label class="col-sm-2 control-label">Type</label>     <div class="col-sm-4">      @Html.DropDownListFor(x => x.DeliverableType,       new List<SelectListItem> {            new SelectListItem { Text = "Type 1", Value = "1" },            new SelectListItem { Text = "Type 2", Value = "2" },            new SelectListItem { Text = "Type 3", Value = "3" },            new SelectListItem { Text = "Type 4", Value = "4" },            new SelectListItem { Text = "Type 5", Value = "5" },       },       new { @class = "form-control" })     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">Description</label>     <div class="col-sm-10">      @Html.TextAreaFor(x => x.Description, new { @class = "form-control", rows = 4 })     </div>    </div>    <div class="form-group" style="margin-bottom: 3px;">     <div class="col-sm-2 col-sm-offset-10">      Weight     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">Phase</label>     <div class="col-sm-3">      @Html.DropDownListFor(x => x.Phase,       new List<SelectListItem> {            new SelectListItem { Text = "Phase 1", Value = "1" },            new SelectListItem { Text = "Phase 2", Value = "2" },            new SelectListItem { Text = "Phase 3", Value = "3" },            new SelectListItem { Text = "Phase 4", Value = "4" },            new SelectListItem { Text = "Phase 5", Value = "5" },       },       new { @class = "form-control" })     </div>     <label class="col-sm-2 control-label">First</label>     <div class="col-sm-3">      <input class="form-control" type="text" placeholder="" />     </div>     <div class="col-sm-2">      <input class="form-control" type="text" placeholder="Weight" />     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">Detail</label>     <div class="col-sm-3">      @Html.TextBoxFor(x => x.Detail, new { @class = "form-control", placeholder = "Detail" })      @Html.ValidationMessageFor(x => x.Detail)     </div>     <label class="col-sm-2 control-label">Second</label>     <div class="col-sm-3">      <input class="form-control" type="text" placeholder="" />     </div>     <div class="col-sm-2">      <input class="form-control" type="text" placeholder="Weight" />     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">Size</label>     <div class="col-sm-3">      @Html.TextBoxFor(x => x.Size, new { @class = "form-control", placeholder = "Size" })     </div>     <label class="col-sm-2 control-label">Third</label>     <div class="col-sm-3">      <input class="form-control" type="text" placeholder="" />     </div>     <div class="col-sm-2">      <input class="form-control" type="text" placeholder="Weight" />     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">WBS Code</label>     <div class="col-sm-3">      @Html.TextBoxFor(x => x.WbsNumber, new { @class = "form-control", placeholder = "WBS Code" })     </div>     <label class="col-sm-2 control-label">Fourth</label>     <div class="col-sm-3">      <input class="form-control" type="text" placeholder="" />     </div>     <div class="col-sm-2">      <input class="form-control" type="text" placeholder="Weight" />     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">Room</label>     <div class="col-sm-3">      @Html.DropDownListFor(x => x.RoomId,           (ViewBag.Rooms as List<SelectListItem>),           new { @class = "form-control" })     </div>     <label class="col-sm-2 control-label">A Variance</label>     <div class="col-sm-3">      <input class="form-control" type="text" placeholder="A Variance" />     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">Area</label>     <div class="col-sm-3">      @Html.DropDownListFor(x => x.AreaId,           (ViewBag.Areas as List<SelectListItem>),           new { @class = "form-control" })     </div>     <label class="col-sm-2 control-label">B Variance</label>     <div class="col-sm-3">      <input class="form-control" type="text" placeholder="B Variance" />     </div>    </div>    <div class="form-group">     <label class="col-sm-2 control-label">Comments</label>     <div class="col-sm-10">      <textarea class="form-control" rows="4"></textarea>     </div>    </div>   </div>   <div class="col-xs-6">    <div class="form-group">     <div class="col-sm-12">      <label class="control-label">Documents</label>      <table class="table table-bordered table-hover table-condensed mt-10">       <thead>        <tr>         <th>File Name</th>         <th>Revision</th>         <th>Date</th>        </tr>       </thead>       <tbody>        <tr>         <td>P-001.pdf</td>         <td>01</td>         <td>03/15/2017</td>        </tr>       </tbody>      </table>     </div>    </div>   </div>  </div> </div> <div class="page_footer absolute-position">  <div class="page_footer_inner page_footer_light text-right">   @if ( Request["action"] != "View" ) {    <button class="btn btn-primary" id="btnSave"><i class="fa fa-floppy-o fa-fw"></i> Save</button>   }   <button id="btnCancel" class="btn btn-default"><i class="fa fa-close fa-fw"></i> Close</button>  </div>  <span id="notification"></span> </div>}<script type="text/javascript"> var DeliverableEdit = DeliverableEdit || {}; (function (o) {  o.timer = null;  o.displayLoading = function (target) {   var element = $(target);   kendo.ui.progress(element, true);   o.timer = setTimeout(function () {    kendo.ui.progress(element, false);   }, 50);  };  o.hideLoading = function (target) {   setTimeout(function () {    clearTimeout(o.timer);   }, 50);  };  o.initializeValidation = function () {   $.validator.setDefaults({    showErrors: function (errorMap, errorList) {     $(".page_footer_inner button").removeProp("disabled", "disabled");     // Clean up any tooltips for valid elements     $.each(this.validElements(), function (index, element) {      var $element = $(element);      $element.data("title", "") // Clear the title - there is no error associated anymore       .removeClass("field-validation-error")       .tooltip("destroy");     });     // Create new tooltips for invalid elements     $.each(errorList, function (index, error) {      var $element = $(error.element);      $element.tooltip("destroy") // Destroy any pre-existing tooltip so we can repopulate with new tooltip content       .data("title", error.message)       .data("placement", "bottom")       .addClass("field-validation-error")       .tooltip(); // Create a new tooltip based on the error messsage we just set in the title     });    }   });   $.validator.unobtrusive.parse($("#editForm"));  };  o.showSuccess = function (msg) {   $("#notification").data('kendoNotification').show(msg, "success");  };  o.showWarning = function (msg) {   $("#notification").data('kendoNotification').show(msg, "warning");  };  // Events during the submit of Ajax.Form  o.onBegin = function () {   $(".page_footer_inner button").prop("disabled", "disabled");   o.displayLoading($(".form-horizontal"));  }  o.onSuccess = function (data) {   o.hideLoading(o.timer);   if (!data || !data.code) {    o.showWarning("Failure,please try it again.");    return;   }   if (data && data.code) {    gridView.refreshGrid();    o.showSuccess("Saved successfully.");    setTimeout(function () {     gridView.closeDeliverableDialog();    }, 500);   }  }  o.onFailure = function (request, error) {   o.hideLoading(o.timer);   o.showWarning("Failure,please try it again.");  }  o.onComplete = function (request, status) {   o.hideLoading(o.timer);   $(".page_footer_inner button").removeProp("disabled", "disabled");  } })(DeliverableEdit); $(function () {  // To fix jquery.validation invalid issue  DeliverableEdit.initializeValidation();  $("#btnCancel").click(function (e) {   e.preventDefault();   gridView.closeDeliverableDialog();  });  $("#btnSave").click(function (e) {   e.preventDefault();   $(".form-horizontal").submit();   $(".page_footer_inner button").prop("disabled", "disabled");  });  $("#notification").kendoNotification({   position: {    pinned: true,    top: 15,    left: '50%'   },   autoHideAfter: 1000  }); });</script>

記得引用對應的js庫————

<link href="~/content/libs/bootstrap/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" type="text/css" /> <link href="~/content/libs/fa/css/font-awesome.min.css" rel="external nofollow" rel="stylesheet" type="text/css" />  <link href="~/content/app/css/site.css" rel="external nofollow" rel="stylesheet" type="text/css" /> <link href="~/content/app/css/bootstrap-extend.css" rel="external nofollow" rel="stylesheet" type="text/css" /> <link href="~/content/app/css/bootstrap-override.css" rel="external nofollow" rel="stylesheet" type="text/css" />  <script src="~/content/libs/jquery/jquery.min.js"></script><script src="~/content/libs/jquery/jquery.validate-vsdoc.js"></script> <script src="~/content/libs/jquery/jquery.validate.js"></script> <script src="~/content/libs/jquery/jquery.validate.unobtrusive.js"></script> <script src="~/Content/libs/jquery/jquery.unobtrusive-ajax.min.js"></script>

后端代碼————

[Route("~/DesignDeliverable/Edit/{id?}")]  [HttpGet]  public ActionResult Edit(Guid? id) {   using ( EmpsDbContext db = new EmpsDbContext() ) {    DesignDeliverable entity = null;    if ( id.HasValue ) {     entity = db.DesignDeliverables.SingleOrDefault(x => x.Id == id.Value);    }    else {     entity = new DesignDeliverable();    }    ViewBag.Rooms = RoomFacade.GetAll().Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList();    ViewBag.Areas = AreaFacade.GetAll().Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList();    return View(entity);   }  }  [Route("~/DesignDeliverable/Save")]  [HttpPost]  public JsonResult Edit(DesignDeliverable model) {   using ( EmpsDbContext db = new EmpsDbContext() ) {    if ( !ModelState.IsValid ) {     return Error();    }    try {     model.GroupId = new Guid("e030c300-849c-4def-807e-a5b35cf144a8"); //todo: fix this hardcode     db.DesignDeliverables.AddOrUpdate(model);     db.SaveChanges();     return Success();    }    catch {     //TODO: to store the exception message    }    return Error();   }  }

以上這篇ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美最猛性xxxxx免费| 91在线视频成人| 亚洲高清一区二| 国产免费一区二区三区香蕉精| 欧美性视频精品| 日韩极品精品视频免费观看| 亚洲激情视频在线播放| 欧美在线日韩在线| 久久久久国产视频| 亚洲va国产va天堂va久久| 欧美丰满少妇xxxxx做受| 伊人伊成久久人综合网小说| 91色在线观看| 91av免费观看91av精品在线| 在线观看欧美日韩国产| 少妇高潮 亚洲精品| 久久在线免费视频| 日韩欧美国产网站| 26uuu亚洲伊人春色| 性金发美女69hd大尺寸| 日韩av在线网页| 久久久久久久久久久亚洲| 亚洲第一区第二区| 亚洲精品99久久久久中文字幕| 日韩中文字幕视频在线| 久久久亚洲福利精品午夜| 亚洲国产精品资源| 日韩经典中文字幕在线观看| 色av吧综合网| 亚洲黄色片网站| 国产精品99久久久久久久久| 97国产真实伦对白精彩视频8| 国语自产精品视频在线看抢先版图片| 国产精品欧美日韩一区二区| 日本成人精品在线| 中文字幕视频一区二区在线有码| 亚洲福利在线播放| 热门国产精品亚洲第一区在线| 中文字幕欧美在线| 91久久久亚洲精品| 粗暴蹂躏中文一区二区三区| 国产最新精品视频| 国产精品自产拍在线观| 亚洲精品视频免费在线观看| 亚洲天堂av网| 精品久久久久久久久国产字幕| 这里只有精品久久| 高清日韩电视剧大全免费播放在线观看| 久久久成人精品| 国产精品毛片a∨一区二区三区|国| 日韩精品视频三区| 欧美激情亚洲一区| 欧美日韩福利电影| 欧美在线一区二区视频| 国内偷自视频区视频综合| 国产在线高清精品| zzijzzij亚洲日本成熟少妇| 久久久久免费视频| 不卡毛片在线看| 国产女人18毛片水18精品| 91在线免费看网站| 日韩在线观看网址| 欧美丝袜美女中出在线| 精品国产成人av| 欧美另类在线观看| 中文字幕亚洲情99在线| 亚洲视频在线观看免费| 91九色单男在线观看| 亚洲精品小视频| 一二美女精品欧洲| 一区二区国产精品视频| 亚洲一级一级97网| 免费91麻豆精品国产自产在线观看| 亚洲欧美一区二区三区四区| 国产精品男女猛烈高潮激情| 欧美丰满少妇xxxxx做受| 亚洲欧美中文日韩v在线观看| 国产视频在线一区二区| 国产精品视频精品视频| 日韩精品中文字幕在线播放| 成人做爽爽免费视频| 国产视频久久久久| 国产一区私人高清影院| 日韩亚洲在线观看| 日韩精品视频中文在线观看| 91精品国产高清久久久久久久久| 亚洲深夜福利在线| 欧美性受xxx| 成人免费视频a| 深夜成人在线观看| 国产在线播放91| 91精品国产综合久久香蕉的用户体验| 久久福利视频网| 国产精品久久久久9999| 国产精品女主播| 欧美日韩中文字幕在线视频| 亚洲第一视频在线观看| 国产色综合天天综合网| 日韩精品视频在线观看免费| 亚洲女人天堂色在线7777| 色999日韩欧美国产| 亚洲国产天堂久久综合网| 亚洲人永久免费| 国产丝袜一区二区三区| 亚洲色图校园春色| 精品一区二区三区电影| 日韩亚洲综合在线| 国产美女精品视频免费观看| 青草青草久热精品视频在线网站| 久久国产精品久久精品| 日韩美女中文字幕| 久久人体大胆视频| 亚洲美女www午夜| 日韩一级黄色av| 日韩av大片在线| 亚洲天堂精品在线| 欧美壮男野外gaytube| 久久精品小视频| 久久久久久尹人网香蕉| 深夜成人在线观看| 日本一区二区在线播放| 欧美亚洲国产成人精品| 欧美极品少妇与黑人| 伊人一区二区三区久久精品| 午夜精品久久久久久久99热| 国产欧美日韩中文字幕在线| 久久久久国产精品一区| 97久久精品视频| 国外色69视频在线观看| 亚洲精品久久7777777| 性亚洲最疯狂xxxx高清| 国产精品毛片a∨一区二区三区|国| 8050国产精品久久久久久| 日韩av在线网站| 疯狂做受xxxx欧美肥白少妇| 97av在线视频免费播放| 美女av一区二区三区| 久久欧美在线电影| 亚洲第一精品福利| 欧美激情亚洲一区| 爽爽爽爽爽爽爽成人免费观看| 欧美日韩精品国产| 久久精品国产精品亚洲| 久久久综合免费视频| 亚洲成人精品av| 日本精品久久中文字幕佐佐木| 精品久久久视频| 国产精品www网站| 亚洲天堂网站在线观看视频| 91久久国产精品| 国模私拍一区二区三区| 午夜精品视频网站| 国产精品99蜜臀久久不卡二区| 色偷偷av一区二区三区乱| 亚洲aⅴ日韩av电影在线观看| 国产日韩综合一区二区性色av| 国产一区二区美女视频| 992tv在线成人免费观看| 日韩欧美亚洲范冰冰与中字| 国产一区二区三区视频免费| 久久夜色精品亚洲噜噜国产mv| 国产97色在线|日韩| 国产精品成人国产乱一区| 国产一级揄自揄精品视频|