• 1398/09/10

Bootstrap Modal Validation :

سلام استاد وقتتون بخیر

اول بگم کلی سرچ کردم درگیرم باهاش و چیزی پیدا نکردم که بتونه مشکلم رو رفع کنه که نارحت نشین بگین سرچ نکرده سوال پرسیده :)

در کنترلر دو تا اکشن دارم به اسم Create 

اکشن اولی که برای نمایش فرمم است و در مودال نمایش داده میشه.

اکشن دوم هم ورودی lessons داره و اون مقدایر رو ثبت میکنه و اگر اعتبارسنجی مدل برقرار نبود نوشتم :

return PartialView("Create", lessons);

اینجور هم نوشته بودم باز فرقی نداشت:

return PartialView(lessons);

ولی به صورت ویو برمیگردونه و دیگه توی مودال نیست.

توی صفحه Create هم از ایجکس استفاده کردم. 

دستور OnFailure هم تست کردم، انجام نمیشد.

میشه لطفااااا یک نمونه کد یا یک ویدیو بذارید که اعتبارسنجی رو در خود مودال نمایش بده؟؟ دستتون رو میبوسم اگ اینکار رو بکنید. خیلیییی ممنون

  • 1398/09/10
  • ساعت 10:35

سلام

کلید Submit Modal را به شکل زیر تغییر دهید 

  <input type="submit" value="ثبت نام" class="btn btn-success pull-left" onclick="$.validator.unobtrusive.parse($('form'));" />

 


  • 1398/09/10
  • ساعت 10:47

مرسی استاد عشقید

ولی یک مشکل هنوز باقی است.

یک فیلد داریم به اسم کد درس که تکراری نباید باشه.

و در کنترلر چک میشه که اگر تکراری بود 

ModelState.AddModelError("LessonID", "کد درس وارد شده تکراری است");
                return PartialView( lessons);

وقتی کد درس تکراری وارد میشه دوباره به همون مشکل برمیخورم که فرم در یک ویو نمایش داده میشه و ارور اونجا قرار داره.


  • 1398/09/10
  • ساعت 10:48

اون رو با Ajax بنویسید


  • 1398/09/10
  • ساعت 10:52
// GET: Admin/Lessons/Create
        public ActionResult Create()
        {
            return PartialView();
        }

        // POST: Admin/Lessons/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(LessonsViewModel lessons)
        {
            if (ModelState.IsValid)
            {
                if (!db.Lessons.Any(l => l.LessonID == lessons.LessonID))
                {
                    Lessons lesson = new Lessons()
                    {
                        LessonID = lessons.LessonID,
                        LessonName = lessons.LessonName,
                        UnitAmali = lessons.UnitAmali,
                        UnitTeori = lessons.UnitTeori,
                        IsActive = true,
                        CreateDate = DateTime.Now
                    };
                    db.Lessons.Add(lesson);
                    db.SaveChanges();
                    return PartialView("ListLessons", db.Lessons.Where(s => s.IsActive == true));
                }
                ModelState.AddModelError("LessonID", "کد درس وارد شده تکراری است");
                return PartialView("Create", lessons);
            }

            return PartialView("Create", lessons);
        }

 

ویو ایندکس:

<h3 class="text-muted text-center mb-3">لیست دروس</h3>
                    <div id="listLesson">
                        @Html.Action("listLessons")
                    </div>

                    <!-- Modal -->
                    <div class="modal fade" id="myLessonModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                        <div class="modal-dialog" role="document">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                    <h4 class="modal-title" id="myLessonModalBodyLabel">Modal title</h4>
                                </div>
                                <div class="modal-body" id="myLessonModalBody">
                                    ...
                                </div>
                            </div>
                        </div>
                    </div>
@section scripts
{
    <script src="~/Scripts/modal.js"></script>
    <script>
        function Create() {
            var title = "افزودن درس";
            $.get("/Admin/Lessons/Create/",
                function (result) {
                    $("#myLessonModal").modal('show');
                    $("#myLessonModalBodyLabel").html(title);
                    $("#myLessonModalBody").html(result);
                })
        }

        function Delete(id) {
            var title = "آیا از حذف این درس اطمینان دارید؟";
            $.get("/Admin/Lessons/Delete/" + id,
                function (result) {
                    $("#myLessonModal").modal('show');
                    $("#myLessonModalBodyLabel").html(title);
                    $("#myLessonModalBody").html(result);
                })
        }

        function success() {
            $("#myLessonModal").modal('hide');
        }

    </script>
}

 

ویو Create

@model DataLayer.ViewModels.LessonsViewModel

@{
    Layout = null;
}
<div class="row" style="text-align:right">
    <div class="col-xl-10 col-lg-9 col-md-8 ">
        <div class="  mt-md-3 mb-5 mx-0">
            @using (Ajax.BeginForm("Create", "Lessons", FormMethod.Post, new AjaxOptions()
            {
                OnSuccess = "success",
                UpdateTargetId = "listLesson"
            }))
            {
                @Html.AntiForgeryToken()
                <div class="form-horizontal">
                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })

                    <div class="form-group">
                        @Html.LabelFor(model => model.LessonID, htmlAttributes: new { @class = "control-label col-md-4" })
                        <div class="col-md-12">
                            @Html.EditorFor(model => model.LessonID, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.LessonID, "", new { @class = "text-danger" })
                        </div>
                    </div>

                    <div class="form-group">
                        @Html.LabelFor(model => model.LessonName, htmlAttributes: new { @class = "control-label col-md-4" })
                        <div class="col-md-12">
                            @Html.EditorFor(model => model.LessonName, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.LessonName, "", new { @class = "text-danger" })
                        </div>
                    </div>

                    <div class="form-group">
                        @Html.LabelFor(model => model.UnitTeori, htmlAttributes: new { @class = "control-label col-md-4" })
                        <div class="col-md-12">
                            @Html.EditorFor(model => model.UnitTeori, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.UnitTeori, "", new { @class = "text-danger" })
                        </div>
                    </div>

                    <div class="form-group">
                        @Html.LabelFor(model => model.UnitAmali, htmlAttributes: new { @class = "control-label col-md-4" })
                        <div class="col-md-12">
                            @Html.EditorFor(model => model.UnitAmali, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.UnitAmali, "", new { @class = "text-danger" })
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="col-lg-offset-2 col-xl-10">
                            <input type="submit" value="ثبت درس" id="myButton" class="btn btn-outline-success" onclick="$.validator.unobtrusive.parse($('form'));"/> |
                            <a data-toggle="modal" style="cursor:pointer" data-target="#myModal" onclick="success()">
                                <i class="btn btn-outline-dark btn-large">بازگشت</i>
                            </a>
                        </div>
                    </div>
                </div>
            }

        </div>
    </div>
</div>

 


logo-enamadlogo-samandehi