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

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

کاربر سایت

yamani8888

عضویت از 1393/04/15

AddModelError برای تگ html

  • سه شنبه 1 تیر 1395
  • 10:01
تشکر میکنم

سلام. چطوری میتونم برای تگ 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>

 

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

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

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 1 تیر 1395
  • 10:34

کافیست براشون یک 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();
               }
           }

 

کاربر سایت

yamani8888

عضویت از 1393/04/15

  • سه شنبه 1 تیر 1395
  • 10:48

ویو من بدون مدل هست و اطلاعاتش پست میشه...

به model ارور میده ....

یک مدل هم اضافه کردم:

@model IEnumerable<FekreKaghaziOnlineShop.Models.ShowOrderItemViewModel>

باز به Image ارور میده

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 1 تیر 1395
  • 10:50

image نام فیلدی در مدل است

برای تصویر چه فیلدی در نظر گرفتید ؟ همون نام را قرار دهید

کاربر سایت

yamani8888

عضویت از 1393/04/15

  • دوشنبه 7 تیر 1395
  • 18:50

سلام مجدد....

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

<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

مشکلی که الان هست اینه که من صفحه سفارشم رو در یک مدال نمایش داده ام و صفحه از نوع پست هستش...

بررسی درستی تصویر در کنترل انجام میشه و پیغام خطا برای تصویر بعد از پست شدن صفحه که در این حالت مدال بسته شده و پارشیال بدون مدال نمایش داده میشه تا خطا رو روی تصویر نمایش بده.

امیدوارم منظور رو گرفته باشید.

اگر بخوام روی خود مدال اطلاعات برگرده و خطای تصویر رو نمایش بده راهش چیه؟

ممنون

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 8 تیر 1395
  • 12:43

برای اعتبار سنجی ؟

کد زیر را در دکمه Submit قرار دهید

onclick="$.validator.unobtrusive.parse($('form'));"

 

 

  <input type="submit" value="ثبت نام" class="btn btn-success pull-left" onclick="$.validator.unobtrusive.parse($('form'));" />

 

کاربر سایت

yamani8888

عضویت از 1393/04/15

  • سه شنبه 8 تیر 1395
  • 13:10

بله برای اعتبار سنجی .

جواب نداد...

modal بسته میشه.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 8 تیر 1395
  • 13:13

باید از Ajax استفاده کنید تا مدال بسته نشه

میتونید از Ajax.BegiForm استفاده کنید

این لینک رو ببینید

کاربر سایت

yamani8888

عضویت از 1393/04/15

  • سه شنبه 8 تیر 1395
  • 13:16

بنده هم از Ajax.BeginForm استفاده کردم.

کد ویو رو قرار دادم در بالا

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 8 تیر 1395
  • 13:20

مشکلتون رو فکر کنم پیدا کردم

در قسمت esle به جای  return view باید return partial view کنید

کاربر سایت

yamani8888

عضویت از 1393/04/15

  • سه شنبه 8 تیر 1395
  • 13:26

جناب مهندس این رو امتحان کرده بودم.با پارشیال هم  جواب نداده بود....

ممنون از این که وقت میگذارید....

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 8 تیر 1395
  • 13:33

شما uppdateTargetId را Showlist گذاشتید یعنی مقدار بازگشتی را در این المان میریزه

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

کاربر سایت

yamani8888

عضویت از 1393/04/15

  • سه شنبه 8 تیر 1395
  • 13:48

متوجه شدم. از تابع Error ایجکس استفاده کنم تا خروجی خطا رو در modal نمایش بدم؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 8 تیر 1395
  • 14:37

میتونید روی نتیجه کار شرط بزارید

مثلا اگر خالی بود یا حاوی یک مقدار بود مدال بسته نشوند و یا اگر true بود مدال بسته شده و لیست بروز شود

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

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

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

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