سلام
من 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 بروم
سلام
مهندس این هم کد ویو مربوطه است
@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
لطفا راهنمای بفرمایید
به تب Consoleو Network مرورگر بروید و بررسی کنید آیا status code شما 200 هست یا خیر.
سلام
بله 200 است
خط 10 سمت View شما اسم اکشن و کنترلرتون رو وارد نکردید:
@using (Html.BeginForm())
سلام
باتشکر از لطفتان
فقط یک نمونه قرار میدهید
فکر نمی کنم مشکل از اون قسمت باشه چون شما دارید به صورت مستفید 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>
سلام
مهندس فهمیدم بخار اینکه دکمه ویرایش داخل
@using (Html.BeginForm())
قرار داره وقتی دکمه را بیرون
@using (Html.BeginForm())
قرار می دهم درست کارمیکند عمل ویرایش
اما مشکلی که داره اینه که ولیدیشن ارورها دیگه کار نمیکنه برای حل این مشکل باید چکارکنم
به شکل زیر عمل کنید:
سلام
مهندس جان من فقط نفهمیدم چطوری ارور را داخل برنامه نمایش دهم
منظورم اینه این کدها را چگونه استفاده کنم
[{ "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>
باتشکر
متن لینک که فرستادم رو چک کنید درون متن کاملا توضیح داده شده به صورت مرحله به مرحله اون رو انجام بدید. شما به یک ActionFilter نیاز دارید برای این که خطا های مروبوط به model رو به یک فرمت خاص به javascript برگردونید. برای این کار باید از متد done استفاده کنید. به طور مثال:
$.ajax({ url: 'url', // more options }).done(function (respones) { if (respones.Success) { alert("Every things is ok :D") } else { alert(respones); } })
اگر موفق به پیاده سازی این روش نشدید از این لینک استفاده کنید.
من کمکتون میکنم همین مثالی که دادم رو اجرا کنید.
$("#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 ارسال می کنید.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)