PDA

View Full Version : سوال: ارجاع به view از طریق ajax بعداز ویرایش



Iran58
دوشنبه 26 شهریور 1397, 14:25 عصر
سلام
من 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 بروم

Iran58
سه شنبه 27 شهریور 1397, 09:53 صبح
سلام
مهندس این هم کد ویو مربوطه است

@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>










@Scripts.Render("~/bundles/jqueryval")

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

Iran58
سه شنبه 27 شهریور 1397, 14:40 عصر
سلام


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

@using (Html.BeginForm())

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

@using (Html.BeginForm())

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


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

nunegandom
چهارشنبه 28 شهریور 1397, 11:04 صبح
سلام وقتی از ajax استفاده میکنید validation ها از کار میوفته که با استفاده از jqueryvalidation (https://jqueryvalidation.org) میتونید انجامش بدید
من یه همچین کدی استفاده کردم
$("#buy").validate({ rules: {
FactorEmail: {
required: false,
email: true
},
Link: {
required: true
},
SelectedService: {
required: true,
range: [1, 999999]
},
SelectedShabake: {
required: true,
range: [1, 999999]
},
SelectedMahsul: {
required: true,
range: [1, 999999]
},
FactorPhoneNumber: {
required: false,
}
}
});

<select id="SelectedShabake" name="SelectedShabake" required data-msg="شبکه مورد نظر خود را انتخاب کنید" class="form-control"> <input class="form-control text-left ltr text-box single-line" id="FactorEmail" data-msg-email="ایمیل صحیح نیست" name="FactorEmail" type="email" value="">


سورس هاش :

<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/additional-methods.min.js"></script>