مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

iran

عضویت از 1394/01/31

ارجاع به view از طریق ajax بعداز ویرایش

  • دوشنبه 26 شهریور 1397
  • 14:58
تشکر میکنم

سلام
من ajax زیر را نوشته ام

<script>
    $(function() {
        $("#Save").on('click',
            function() {
                var dataObject = {
                    ContactUsId: $("#ContactUsId").val(),
                    ContacUsPreson: $("#ContacUsPreson").val(),
                    ContacUsNo: $("#ContacUsNo").val(),
                    CountryId: $("#CountryId").val(),
                    StatesId: $("#StatesId").val()
                };
                $.ajax({
                    url: '@Url.Action("Edit", "TestOne")',
                    data: dataObject,
                    type: "Post",
                    success: function (data) {
                        alert(2);
                    }
                });
            });
    });
</script>

و کنترلر هم بصورت زیر نوشته ام

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(ContactU contactU)
        {
            if (ModelState.IsValid)
            {
                db.Entry(contactU).State = EntityState.Modified;
                db.SaveChanges();
                return Json("true", JsonRequestBehavior.AllowGet);
            }
            return View(contactU);
        }

اما وقتی عمل ویرایش انجام میشود alert(2); را نشان نمی دهد
کنترلر و ajax را چگونه باید تغییر بدهم که بتوانم از طریق ajax به صفحه Index بروم

پاسخ های این پرسش

تعداد پاسخ ها : 12 پاسخ
کاربر سایت

iran

عضویت از 1394/01/31

  • سه شنبه 27 شهریور 1397
  • 09:31

سلام
مهندس این هم کد ویو مربوطه است

@model ModalTextErrorValidation.Models.ContactU

@{
    Layout = null;
}

<h2>Edit</h2>


@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>ContactU</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.ContactUsId)

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

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

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

        <div class="form-group">
            @Html.LabelFor(model => model.StatesId, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.StatesId, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.StatesId, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>
    <div class="col-lg-6">
        <button id='Save' type="submit" class="btn btn-success rounded float-md-right">
            <span class="ml-lg-1">Save</span>
        </button>
    </div>

}



<div class="col-lg-6">
    <button id='Back' class="btn btn-success rounded float-md-left">
        <span class="ml-lg-1">Back</span>
    </button>
</div>

لطفا بگویید چگونه می توانم وقتی عملیات ویرایش با موفقیت انجام شد
وارد قسمت success ajax مربوطه شوم نه وارد صفحه json 
لطفا راهنمای بفرمایید

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 27 شهریور 1397
  • 11:12

به تب Consoleو Network مرورگر بروید و بررسی کنید آیا status code شما 200 هست یا خیر. 

کاربر سایت

iran

عضویت از 1394/01/31

  • سه شنبه 27 شهریور 1397
  • 11:33

سلام

بله 200 است

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 27 شهریور 1397
  • 11:36

خط 10 سمت View شما اسم اکشن و کنترلرتون رو وارد نکردید:

@using (Html.BeginForm())

کاربر سایت

iran

عضویت از 1394/01/31

  • سه شنبه 27 شهریور 1397
  • 11:39

سلام

باتشکر از لطفتان

فقط یک نمونه قرار میدهید

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 27 شهریور 1397
  • 12:14

فکر نمی کنم مشکل از اون قسمت باشه چون شما دارید به صورت مستفید url رو وارد می کنید. بهتره debugger استفاده کنید تا برسی کنیم کد جاوااسکریپت شما چجوری کار میکنه.

<script>
    $(function() {
        $("#Save").on('click',
            function() {
                debugger;
                
                var dataObject = {
                    ContactUsId: $("#ContactUsId").val(),
                    ContacUsPreson: $("#ContacUsPreson").val(),
                    ContacUsNo: $("#ContacUsNo").val(),
                    CountryId: $("#CountryId").val(),
                    StatesId: $("#StatesId").val()
                };
                
                $.ajax({
                    url: '@Url.Action("Edit", "TestOne")',
                    data: dataObject,
                    type: "Post",
                    success: function (data) {
                        
                        debugger;

                        alert(2);
                    }
                });
            });
    });
</script>

کاربر سایت

iran

عضویت از 1394/01/31

  • سه شنبه 27 شهریور 1397
  • 14:04

سلام

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

@using (Html.BeginForm()) 

قرار داره وقتی دکمه را بیرون 

@using (Html.BeginForm()) 

قرار می دهم درست کارمیکند عمل ویرایش

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

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 27 شهریور 1397
  • 14:18

به  شکل زیر عمل کنید:

Use ASP.NET MVC validation with jquery ajax?

کاربر سایت

iran

عضویت از 1394/01/31

  • شنبه 31 شهریور 1397
  • 09:45

سلام

مهندس جان من فقط نفهمیدم چطوری ارور را داخل برنامه نمایش دهم

منظورم اینه این کدها را چگونه استفاده کنم

[{
    "key":"Name",
    "errors":["The Name field is required."]
},
{
    "key":"Description",
    "errors":["The Description field is required."]
}]

من در بخش 


error: function () {
            alert('error');
        }

کد زیر را نوشتم اما هیچی نمایش نمیدهد

}, error: function () {

                            $("#StatesId span").html('<span id="StatesId-error" class="">The field a number.</span>');
                        }

کد

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

باتشکر

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 31 شهریور 1397
  • 11:14

متن لینک که فرستادم رو چک کنید درون متن کاملا توضیح داده شده به صورت مرحله به مرحله اون رو انجام بدید. شما به یک ActionFilter نیاز دارید برای این که خطا های مروبوط به model رو به یک فرمت خاص به javascript برگردونید. برای این کار باید از متد done استفاده کنید. به طور مثال:

$.ajax({
    url: 'url',
    // more options
}).done(function (respones) {

    if (respones.Success) {

        alert("Every things is ok :D")


    } else {

        

        alert(respones);
    }

})

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

کاربر سایت

iran

عضویت از 1394/01/31

  • چهارشنبه 4 مهر 1397
  • 14:26
سلام مهندس ببخشید دوباره مزاحم شدم هرکاری کردم نشد که نشد میتوانید لطف کنید یک مثال خیلی ساده قرار بدهید باسپاس
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 4 مهر 1397
  • 14:52

من کمکتون میکنم همین مثالی که دادم رو اجرا کنید. 

        $("#yourSubmitButtonID").click(function (e) {

                e.preventDefault();
                var _this = $(this);
                var _form = _this.closest("form");

                var isvalid = _form .valid();  // Tells whether the form is valid

                if (isvalid)
                {
                   $.ajax({
                       // more code
                   })
                }

            });

        });

کد بالا رو ابتدا دورن صفحه مورد نظر قرار بدید. 

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

حال زمانی کاربر برروی کلید ارسال کلیک کند function ی که به متد click داده شده است فراخوانی می شود. این function دارای یک پارامتر به نام e است که این پارامتر شی کلیک شده بروی آن می باشد.

e.preventDefault();

این کد از ارسال شدن فرم شما جلوگیری می کند.

_form.valid();

یک مقدار bool بازگردانی می کند که که معتبر بودن یا نبودن فرم شما مشخص می شود.

   if (isvalid)
    {
             $.ajax({
                 // more code
             })
     }

در این قسمت هم درصورت معتبر بودن فرم آن را از طریق ajax ارسال می کنید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)