PDA

View Full Version : عدم نمایش پیغام خطا ها



Wily_Fox
پنج شنبه 22 فروردین 1392, 11:38 صبح
کسی از دوستان پاسخی نداره؟

hakim22
پنج شنبه 22 فروردین 1392, 22:42 عصر
فایل Web Config رو بگردید :

<customErrors mode="On" defaultRedirect="~/Error/Unknown">
</customErrors>

بجای On بهتره از RemoteOnly استفاده کنید

یکی هم چک کنید گزینه ی Compilation در قسمت debug روی True تنظیم شده باشد ( درون Web.Config)

Wily_Fox
جمعه 23 فروردین 1392, 10:51 صبح
خیلی متشکرم که پاسخ دادید.

نمیدونم چرا سوال این تایپیک نمایش داده نمیشه!!!؟؟؟
به مدیرها هم اطلاع دادم اما مثل اینکه مدیرها به MVC اصلا بها نمیدن!!!!!!


منظورم از عدم نمایش پیغام خطا، این نیست که خطا روی بده و نمایش داده نشه.

منظورم اینه که وقتی برای مدلی Required تنظیم شده و واسه اون هم پیغامی بشرح


[Required(ErrorMessage = "کاربر گرامی لطفا موضوع صفحه مورد نظر وارد نمائید ")]

تعیین شده نمایش داده نمیشه.

البته قبلا نمایش میداد. اما الان تو کل پروژه نمایش داده نمیشه.

hakim22
جمعه 23 فروردین 1392, 13:44 عصر
این کار با JavaScript و jQuery انجام میشه
اگر Browser شما جاوا اسکریپتش فعال است مشکل باید در این باشد که در View مربوط به صفحه ی ورود اطلاعات دو کتابخانه ی jQuery.unObtrusiveو jQuery.Validate ارجاع داده نشده اند.

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



@section scripts{
@System.Web.Optimization.Scripts.Render("~/bundles/jqueryval");
}



( با این فرض که فایل BundleConfig.cs در فولدر App_start را دستکاری نکرده باشید

Wily_Fox
جمعه 23 فروردین 1392, 17:36 عصر
این کار با JavaScript و jQuery انجام میشه
اگر Browser شما جاوا اسکریپتش فعال است مشکل باید در این باشد که در View مربوط به صفحه ی ورود اطلاعات دو کتابخانه ی jQuery.unObtrusiveو jQuery.Validate ارجاع داده نشده اند.

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



@section scripts{
@System.Web.Optimization.Scripts.Render("~/bundles/jqueryval");
}



( با این فرض که فایل BundleConfig.cs در فولدر App_start را دستکاری نکرده باشید

کلیه کنترل هارو خودم نوشتم. کد فوق رو هم اضافه کردم. اما متاسفانه نمایش داده نمیشه!

hakim22
جمعه 23 فروردین 1392, 19:22 عصر
احتمالا مشکل شما اینه که با Helper کنترلها رو نساخته اید و اینکار رو با tag مربوط input در html ساخته اید.
یکی از فواید کار با HTML تنظیم خودکار بعضی چیزهاست. در کنترلهایی که با Helper ساخته میشوند چند Attribute با پیشوند data- ساخته میشوند که هر ورودی را به سیستم Validating متصل می کند.

میتوانید دستی این خاصیت ها رو به تگ input اضافه کنید.


برای فعال سازی خطایابی

data-val="true"

برای نمایش پیغام خطا
data-val-required="متن پیغام خطا برای هر ورودی مجزاست"


درضمن هر input باید داریا خاصیت name و id معادل نام property آن در model (کلاس تعریفی) باشد.

---
به دلایل زیادی توصیه می کند کد رو عوض کرده و به سراغ helper ها بروید. در غیر این صورت مباحث مربوط به Validating رو در jQuery جستجو کنید.

Wily_Fox
شنبه 24 فروردین 1392, 10:26 صبح
data-val="true"

این مقدار رو کجا قرار بدم؟


به دلایل زیادی توصیه می کند کد رو عوض کرده و به سراغ helper ها بروید.

دوست عزیز امکان داره کمی بیشتر توضیح بدید؟

Wily_Fox
شنبه 24 فروردین 1392, 10:31 صبح
کلا از helper استفاده کردم
این نمونه فرم ایجاد footer من هست اش:



@model DynamicWebsite.Areas.Admin.Models.Admin_FooterCrea teOrViewModel
@{
ViewBag.Title = "Create";
Layout = "~/Areas/Admin/Views/Shared/Simple_MasterPage.cshtml";
}
@Html.Partial("_HeaderPartial")
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
<legend>@Html.DisplayFor(model=>model._Message_6)</legend>

<div class="editor-label">
@Html.LabelFor(model => model.FooterModel.LinkName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FooterModel.LinkName)
@Html.ValidationMessageFor(model => model.FooterModel.LinkName)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.FooterModel.LinkDescription)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FooterModel.LinkDescription)
@Html.ValidationMessageFor(model => model.FooterModel.LinkDescription)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.FooterModel.LinkUrl)
</div>
<div class="editor-Url">
@Html.EditorFor(model => model.FooterModel.LinkUrl)
@Html.ValidationMessageFor(model => model.FooterModel.LinkUrl)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.FooterModel.ParentId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FooterModel.ParentId)
@Html.ValidationMessageFor(model => model.FooterModel.ParentId)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.FooterModel.LinkSort)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FooterModel.LinkSort)
@Html.ValidationMessageFor(model => model.FooterModel.LinkSort)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.FooterModel.IsActive)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FooterModel.IsActive)
@Html.ValidationMessageFor(model => model.FooterModel.IsActive)
</div>
<input type="submit" value="@Html.DisplayFor(model=>model._Create)" />
</fieldset>
}
</div>


@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}

hakim22
شنبه 24 فروردین 1392, 17:25 عصر
آیا این مشکل فقط در IE هست یا در همه ی Browser ها وجود داره !؟

Wily_Fox
یک شنبه 25 فروردین 1392, 00:04 صبح
آیا این مشکل فقط در IE هست یا در همه ی Browser ها وجود داره !؟

فرقی نمی کنه. تو همه Browser هام وجود داره.

جالب اینجاست که وقتی پراپرتی مدلی رو با مقادیر پیش فرض تعریف می کنم (مثلا در هنگام ایجاد با اون مقدار پیش فرض باشه) مقدار پیش فرض رو هم نمیاره!!!

hakim22
یک شنبه 25 فروردین 1392, 11:34 صبح
توی Web.config در app setting دو کلید زیر باید باشند :

<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

در ضمن چک کنید که قبل از بارگذاری jqueryval باید jquery لود شده باشه. و کلا مطمئن بشید که jquery کار می کنه
چک کنید که در View Source صفحه ی وب نهایی کدهای data-val و ... وجود دارند (روی input ها)

Wily_Fox
یک شنبه 25 فروردین 1392, 12:18 عصر
واقعا زحمت کشیدی دستت درد نکنه.

jquery های من لود نمیشدن.

خیلی ممنون. لطف کردی