توضیحات و دانلود

نمایش پیام خطا Exception از Controller به View در ASP.Net MVC
0 0
نمایش پیام خطا Exception از Controller به View در ASP.Net MVC

با سلام در این مقاله، با یک مثال توضیح خواهیم داد که چگونه پیام های خطا Exception را از Controller به View در ASP.Net MVC Razor منتقل کنید.
پیام خطا Exception از Controller به View با استفاده از Html.ValidationSummary تابع Html Helper در ASP.Net MVC Razor نمایش داده خواهد شد .
توجه :

به طور پیش فرض اعتبار سنجی انجام شده با استفاده از ویژگی Data Annotation در Server Side است. و از این رو برای ایجاد آن در Client Side باید Client Side validation فعال باشد.
Model
کلاس Model زیر شامل یک ویژگی سن است که از ویژگی های Data Annotation معتبر استفاده شده است.
ویژگی Annotation مورد نیاز با مشخصه Error Message با مقدار رشته مشخص شده است. همانطور که از نام مشخص است ، هنگامی که اعتبار مربوطه نتواند، این مقدار رشته به کاربر نمایش داده می شود.

public class PersonModel
{
    [Display(Name = "Age")]
    [Required(ErrorMessage = "Age is required.")]
    public string Age { get; set; }
}

Controller
Controller متشکل از دو روش است :
روش  دست زدن به عملیات GET
در داخل این روش View بازگردانده می شود.
روش اداره عملیات POST
این روش عمل عملیات POST را انجام می دهد و هنگامی که فرم ارسال می شود، شی کلاس PersonModel به این روش ارسال می شود.
ارزش سن به شکل عدد صحیح در Try block تبدیل می شود و در صورت هر گونه خطا، بلوک Catch آن را پردازش می کند.
درون بلوک Catch، جزئیات استثنای از شیء کلاس Exception استخراج می شود تا یک پیام صحیح HTML ایجاد و در نهایت پیام رشته HTML به عنوان پارامتر به تابع ModelState.AddModelError منتقل شود.

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(PersonModel person)
    {
        try
        {
            int age = int.Parse(person.Age);
        }
        catch (Exception ex)
        {
            string message = string.Format("<b>Message:</b> {0}<br /><br />", ex.Message);
            message += string.Format("<b>StackTrace:</b> {0}<br /><br />", ex.StackTrace.Replace(Environment.NewLine, string.Empty));
            message += string.Format("<b>Source:</b> {0}<br /><br />", ex.Source.Replace(Environment.NewLine, string.Empty));
            message += string.Format("<b>TargetSite:</b> {0}", ex.TargetSite.ToString().Replace(Environment.NewLine, string.Empty));
            ModelState.AddModelError(string.Empty, message);
        }
 
        return View();
    }
}

View
در داخل View، در خط اول، کلاس PersonModel به عنوان Modelبرای Viewاعلام می شود.
Viewشامل یک فرم HTML است که با استفاده از روش Html.BeginForm با پارامترهای زیر ایجاد شده است.
ActionName- نام عمل در این مورد Index است.
ControllerName - نام Controller در این مورد خانه است.
FormMethod - این روش فرم را یعنی GET یا POST مشخص می کند. در این مورد به POST تنظیم خواهد شد.
در داخل View، شش تابع از عملکردهای HTML Helper مورد استفاده قرار می گیرد :
1. Html.LabelFor - نمایش نام ویژگیModel.
2. Html.TextBoxFor - ایجاد یک TextBox برای ویژگی Model.
3. Html.ValidationMessageFor - نمایش پیام Validation برای ویژگی ها.
4. Html.Raw - رندر محتوای HTML در View
5. HttpUtility.HtmlDecode - رمزگشایی رشته HTML.
6. ValidationSummary  - Html.ValidationSummary برای نمایش پیام خطا از Controller استفاده می شود. از آنجا که پیام خطا در فرمت HTML است، خروجی از Html.ValidationSummary با استفاده از روش HttpUtility.HtmlDecode رمزگشایی می شود و سپس با استفاده از روش Html.Raw Helper نمایش داده می شود.
همچنین دکمه Submit وجود دارد که هنگام کلیک، فرم ارسال می شود.
بسته های اسکریپت jQuery و jQuery Validation در انتهای Modelبا استفاده از تابع Scripts.Render رندر می شوند.

@model MobileNumber_Validation_MVC.Models.PersonModel
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
    <style type="text/css">
        body {
            font-family: Arial;
            font-size: 10pt;
        }
        .error {
            color: red;
        }
        .exception {
            color: brown;
        }
    </style>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <table>
            <tr>
                <td>@Html.LabelFor(m => m.Age)</td>
                <td>@Html.TextBoxFor(m => m.Age)</td>
                <td>@Html.ValidationMessageFor(m => m.Age, "",new { @class = "error" })</td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="Submit"/></td>
                <td></td>
            </tr>
        </table>
        @Html.Raw(HttpUtility.HtmlDecode((Html.ValidationSummary(false, "", new { @class = "exception" })).ToHtmlString()))
    }
</body>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
</html>

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :