با سلام.
اطلاعات ویو :
با تشکر.
اطلاعات کنترلر من بصورت زیر است:
using MvcApplication3.Models; ... namespace MvcApplication3.Controllers { public class StudentController : Controller { public ActionResult Index() { //var data = new StudentsList(); return View(); } public ActionResult DataList() { var data = new StudentsList(); return PartialView("Pv_DataList", data); } #region Edit [HttpGet] public ActionResult Edit(int? id) { var data = new StudentsList().FirstOrDefault(p => p.Id == id); return PartialView("Pv_Edit", data); } [HttpPost] [AjaxOnly] [ValidateAntiForgeryToken] public ActionResult Edit(StudentModel model) { Thread.Sleep(1000); if (this.ModelState.IsValid) { return Json("ok", JsonRequestBehavior.AllowGet); } return Json("error"); } #endregion } }
@using MvcApplication3.Models @{ ViewBag.Title = "Student Index"; } <style> #div_StudentEditDialogContainer { padding: 15px; background-color: silver; border: 1px solid gray; -webkit-border-radius: pxpx; -moz-border-radius: pxpx; border-radius: 10px; display: none; position: absolute; -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.3); -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.4); box-shadow: 0 1px 3px rgba(0,0,0,0.5); } </style> <h2>Student Index</h2> <div id="div_StudentListViewContainer"> @{ Html.RenderAction("DataList", "Student");} </div> <div id="div_StudentEditDialogContainer"> @{ Html.RenderAction("Edit", "Student");} </div> <div id="div_StudentAddDialogContainer"> </div> <div id="div_StudentRemoveDialogContainer"> </div> <div id="div_StudentSearchDialogContainer"> </div> @section JavaScript{ <script type="text/javascript"> $(document).ready(function () { $("#div_StudentListViewContainer table input[type='submit']").click(function (e) { //show edit dialog e.preventDefault(); var id = $(this).parent().parent().attr('data-studentid'); var url = '@Url.Action("Edit", "Student")'; $.ajax({ type: "GET", url: url, data: { id: id }, beforeSend: function () { //$(waitingPanel).css("display", "block"); }, success: function (html) { if (html == "nodata") { $("#div_StudentEditDialogContainer").html("دانشجویی با این مشخصات یافت نشد!"); } else { $("#div_StudentEditDialogContainer").css("display", "block"); $("#div_StudentEditDialogContainer").html("").append(html); } }, complete: function () { //$(waitingPanel).css("display", "none"); } }); }); }); </script> }
و یک دیالوگ برای ویرایش را بصورت داینامیک در صفحه ظاهر میکنم، اما اعتبارسنجی سمت کاربر برای آن کار نمیکند:
@using MvcApplication3.Models @model StudentModel @{ var postUrl = Url.Action(actionName: "Edit", controllerName: "Student"); } @using (Html.BeginForm(actionName: "Edit", controllerName: "Student", method: FormMethod.Post, htmlAttributes: new { id = "frm_studentEdit" })) { @Html.ValidationSummary(true) @Html.AntiForgeryToken() <div class="editor-label"> @Html.LabelFor(model => model.Id) </div> <div class="editor-field"> @Html.EditorFor(model => model.Id) @Html.ValidationMessageFor(model => model.Id) </div> <div class="editor-label"> @Html.LabelFor(model => model.Code) </div> <div class="editor-field"> @Html.EditorFor(model => model.Code) @Html.ValidationMessageFor(model => model.Code) </div> <div class="editor-label"> @Html.LabelFor(model => model.FullName) </div> <div class="editor-field"> @Html.EditorFor(model => model.FullName) @Html.ValidationMessageFor(model => model.FullName) </div> <div class="editor-label"> @Html.LabelFor(model => model.BirthDate) </div> <div class="editor-field"> @Html.EditorFor(model => model.BirthDate) @Html.ValidationMessageFor(model => model.BirthDate) </div> <div class="editor-label"> @Html.LabelFor(model => model.IsMale) </div> <div class="editor-field"> @Html.EditorFor(model => model.IsMale) @Html.ValidationMessageFor(model => model.IsMale) </div> <p> <input type="submit" id="btn_Save" value="ذخیره" /> <input type="submit" id="btn_Cancel" value="انصراف" /> </p> } <script type="text/javascript"> $(function () { $("#btn_Save").click(function (e) { e.preventDefault(); var button = $(this); $("#frm_studentEdit").PostMvcFormAjax({ postUrl: '@postUrl', loginUrl: '/login', beforePostHandler: function () { //غیرفعال سازی دکمه ارسال button.attr('disabled', 'disabled'); button.val("..."); }, completeHandler: function (data) { //فعال سازی مجدد دکمه ارسال button.removeAttr('disabled'); button.val("ذخیره"); }, errorHandler: function () { alert('خطایی رخ داده است'); } }); }); $("#btn_Cancel").click(function (e) { e.preventDefault(); var button = $(this); $(".editDialog").parent("div").css("display", "none"); }); }); </script>