سلام. چطوری میتونم برای تگ input از نوع file ارور بنویسم که از سمت controler کنترل بشه؟
کد کنترلر:
if (img1 != null) { if (CheckContentImage.IsImage(img1)) { strImg1 = Guid.NewGuid().ToString() + Path.GetExtension(img1.FileName); img1.SaveAs(Server.MapPath("/Images/Orders/" + strImg1)); } else { ModelState.AddModelError("img1", "تصویر معتبر نیست"); return View(); } }
کد ویو:
@{ ViewBag.Title = "سبد خرید"; } @using (Ajax.BeginForm("CreateOrder", "Shop", FormMethod.Post, new AjaxOptions() { OnSuccess = "Success", UpdateTargetId = "ShowList" }, new { enctype = "multipart/form-data" })) { @Html.AntiForgeryToken() <div class="row_3"> <div class="container"> <dl class="dl-horizontal"> <dt> تعداد سفارش: </dt> <dd> <p><input type="number" id="countSerfaresh" name="countSefaresh" value="1" /> هزار عدد</p> </dd> <dt> تصویر اول: </dt> <dd> <p><input type="file" name="img1" id="imgg1"/></p> </dd> <dt> تصویر دوم: </dt> <dd> <p><input type="file" name="img2" id="imgg2"/></p> </dd> </dl> <input type="submit" value="ثبت سفارش" class="btn btn-warning" /> </div> </div> } <script> $(document).ready(function () { $('input[type=number]').addClass('form-control'); }); </script>
کافیست براشون یک Validator قرار بدید
کد زیر را زیر FileUpload قرار دهید
@Html.ValidationMessageFor(model => model.Image, "", new { @class = "text-danger" })
در کنترلر هم به شکل زیر
if (img1 != null) { if (CheckContentImage.IsImage(img1)) { strImg1 = Guid.NewGuid().ToString() + Path.GetExtension(img1.FileName); img1.SaveAs(Server.MapPath("/Images/Orders/" + strImg1)); } else { ModelState.AddModelError("Image", "تصویر معتبر نیست"); return View(); } }
ویو من بدون مدل هست و اطلاعاتش پست میشه...
به model ارور میده ....
یک مدل هم اضافه کردم:
@model IEnumerable<FekreKaghaziOnlineShop.Models.ShowOrderItemViewModel>
باز به Image ارور میده
image نام فیلدی در مدل است
برای تصویر چه فیلدی در نظر گرفتید ؟ همون نام را قرار دهید
سلام مجدد....
مشکل من حل شد و به اسکریپت هاش نیاز داشت.
<script src="~/Scripts/jquery.validate.min.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
مشکلی که الان هست اینه که من صفحه سفارشم رو در یک مدال نمایش داده ام و صفحه از نوع پست هستش...
بررسی درستی تصویر در کنترل انجام میشه و پیغام خطا برای تصویر بعد از پست شدن صفحه که در این حالت مدال بسته شده و پارشیال بدون مدال نمایش داده میشه تا خطا رو روی تصویر نمایش بده.
امیدوارم منظور رو گرفته باشید.
اگر بخوام روی خود مدال اطلاعات برگرده و خطای تصویر رو نمایش بده راهش چیه؟
ممنون
برای اعتبار سنجی ؟
کد زیر را در دکمه Submit قرار دهید
onclick="$.validator.unobtrusive.parse($('form'));"
<input type="submit" value="ثبت نام" class="btn btn-success pull-left" onclick="$.validator.unobtrusive.parse($('form'));" />
بله برای اعتبار سنجی .
جواب نداد...
modal بسته میشه.
بنده هم از Ajax.BeginForm استفاده کردم.
کد ویو رو قرار دادم در بالا
مشکلتون رو فکر کنم پیدا کردم
در قسمت esle به جای return view باید return partial view کنید
جناب مهندس این رو امتحان کرده بودم.با پارشیال هم جواب نداده بود....
ممنون از این که وقت میگذارید....
شما uppdateTargetId را Showlist گذاشتید یعنی مقدار بازگشتی را در این المان میریزه
باید این رو کنترل کنید تا اگر خطایی بود در خود مدال نمایش بده
متوجه شدم. از تابع Error ایجکس استفاده کنم تا خروجی خطا رو در modal نمایش بدم؟
میتونید روی نتیجه کار شرط بزارید
مثلا اگر خالی بود یا حاوی یک مقدار بود مدال بسته نشوند و یا اگر true بود مدال بسته شده و لیست بروز شود
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)