دوستان من یک دکمه دارم به اسم ثبت وقتی می زنم یک مودال باز میشه حالا می خوام با ایجکس مقادیر رو ارسال کنم به کنترلر و دوم اینکه اگر فیلد خالی بود در مودال ولیدیشن نمایش داده بشه البته ایجکسی هم خطا نمایش بده خوبه ممنون میشم راهنمایی کنید
کدهای کنترلر
[HttpPost]
[Route("Create")]
public IActionResult Create(City city)
{
if (!ModelState.IsValid)
{
return Json(new { status = "failModel" });
}
try
{
City newcity = new City
{
CityName = city.CityName
};
_iadmin.AddCity(newcity);
return Json(new { status = "success" });
}
catch
{
return Json(new { status = "fail" });
}
}
این هم کد های مودال
<form id="frmCity">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">ثبت شهر</h4>
</div>
<div class="modal-dialog" role="document">
<div class="modal-body">
<div class="form-group">
<label asp-for="CityName" class="control-label"></label>
<input asp-for="CityName" class="form-control" />
<span asp-validation-for="CityName" class="text-danger"></span>
</div>
</div>
</div>
<div class="modal-footer" style="text-align:left;">
<button class="btn btn-default" type="button" data-dismiss="modal">برگشت</button>
<button class="btn btn-success" type="submit">
ایجاد
</button>
</div>
</form>
و این هم کدهای ایجکس
$('#frmCity').submit(function myfunction(e) {
e.preventDefault();
var form = $(this);
$.ajax({
type: "post",
url: '@Url.Action("Create", "Cities")',
cache: false,
data: form.serialize()
}).done(function (msg) {
if (msg.status === "failModel") {
alert('علی');
return false;
}
});
});
سعی کنید همیشه کدهایی رو که نوشتید قرار بدید تا بشه دقیق راهنمایی کرد. اینجوری فقط میشه یه سری کلیات رو گفت که مطمئنا به پاسخ نمیرسید
پس بهتره سوال رو ویرایش کنید و کدهایی که نوشتید رو دقیقا قرار بدید
به نظرم چند تا اشکال هست در اینجا
اول اینکه شما توی فرم Modal خودتون هیچ مدلی ندارید. بنابراین نمی تونید Validation های سمت سرور رو نمایش بدید در این فرم مودال. (البته شاید هم دارید ولی توی کدهاتون ننوشتید)
نکته دوم اینکه فرض می کنیم شما بالای فرم مودال خودتون model دارید. خب ولیدیشن هایی که از مدل نمایش داده میشن ولیدیشن های سمت سرور هستن. مثلا فرض کنید
[Display(Name = "شهر")]
[Required(ErrorMessage = "لطفا شهر را وارد کنید")]
Public string CityName {get; set;}
اگر از Property بالا توی فرم خودتون استفاده کنید در صورتی خطاها و ولیدیشن ها نمایش داده میشن که شما اطلاعات رو به صورت submit عادی سمت سرور ارسال کنید. یعنی از ایجکس استفاده نکنید. چون ولیدیشن بالا یک ولیدیشن سمت سرور هست و در Request های سمت سرور نمایش داده میشه.
در حالی که شما یک Request سمت کلاینت دارید(همون ایجکس) پس این ولیدیشن ها نمایش داده نمشن.
شما یا باید Request رو عادی کنید یعنی به صورت زیر
<form asp-controller="ControllerName" asp-action="ActionName" method="post">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">ثبت شهر</h4>
</div>
<div class="modal-dialog" role="document">
<div class="modal-body">
<div class="form-group">
<label asp-for="CityName" class="control-label"></label>
<input asp-for="CityName" class="form-control" />
<span asp-validation-for="CityName" class="text-danger"></span>
</div>
</div>
</div>
<div class="modal-footer" style="text-align:left;">
<button class="btn btn-default" type="button" data-dismiss="modal">برگشت</button>
<button class="btn btn-success" type="submit">
ایجاد
</button>
</div>
</form>
یا اینکه ولیدیشن ها رو از طریق خود جی کوئری کنترل کنید و با alert پیغام خطا بدید
موفق باشید
ممنون از پاسختون اما با جی کوئری هم نمیشه کنترل کرد چرا؟چون زمانیکه شما مقادیر رو به یک اکشن دیگه ارسال می کنید که مودال باز بشه کدهای جی کوئری رو نمی توان تو ویو اون اکشن نوشت یعنی تو مودال اصلا کدهای جی کوئری خونده نمیشه و باید تو ایندکس نوشت ولی تو ایندکس هم فرم مودال خونده نمیشه
درمورد مدل هم عرض کنم بله ولیدیشن نمایش داده میشه ولی نه توی مودال درواقع به یک صفحه جدا ارسال میشه و بصورت معمولی نمایش داده میشه از return partialview هم استفاده کردم اما نتیجه ای نداشت
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
214
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
396
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
567
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2011
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|