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

اعتبار سنجی Fileupload با استفاده از Data Annotations در ASP.Net MVC
0 0
اعتبار سنجی Fileupload با استفاده از Data Annotations در ASP.Net MVC

 با سلام در این مقاله با یک مثال چگونگی می توان اعتبار سنجی Client Side را در مورد عنصر HTML Fileupload یعنی (<input type = “file” />) با استفاده از Data Annotations در کلاس Model و jQuery در ASP.Net MVC Razor توضیح خواهیم داد .
اعتبارسنجی عنصر HTML Fileupload اجازه می دهد تا با فیلتر کردن آنها با استفاده از پسوندهای خود ، فقط برخی از فایلهای خاص را آپلود کنید. این فیلتر کردن فایل ها با استفاده از ویژگی RegularExpression Data Annotation attribute در کلاس Model انجام می شود.

استفاده از بسته نرم افزاری (ScriptBundle) درASP.Net MVC Razor
توجه :

به طور پیش فرض اعتبارسنجی انجام شده با استفاده از ویژگی های Data Annotation attributes در Server Side است. و از این رو ، برای به کار آمدن Client Side ، اعتبار سنجی Client Side باید فعال شود.
عبارت منظم
عبارت منظم زیر برای تأیید اعتبار فایل انتخاب شده در عنصر HTML Fileupload با استفاده از پسوند آن استفاده می شود.
عبارت منظم را می توان تغییر داد تا برای افزودن چندین فایل و اضافه کردن پسوندها ، از آن استفاده شود.
توجه :

پسوند فایل باید با کاراکتر Pipe (|) از هم جدا شود و با کاراکتر Dot (.) پیشوند شود.
بیان منظم فقط برای اجازه دادن به اسناد Word و فایلهای PDF

([a-zA-Z0-9\s_\\.\-:])+(.doc|.docx|.pdf)$

بیان منظم فقط برای مجاز شدن فایلهای تصویری

([a-zA-Z0-9\s_\\.\-:])+(.png|.jpg|.gif)$

بیان منظم فقط برای مجاز کردن فایلهای متن

([a-zA-Z0-9\s_\\.\-:])+(.txt)$

بیان منظم فقط برای اجازه دادن به فایل های اکسل

([a-zA-Z0-9\s_\\.\-:])+(.xls|.xlsx)$

Model
کلاس Model زیر متشکل از یک ویژگی ارسال شده در PostedFile است که در آن از ویژگی های اعتبار سنجی داده زیر استفاده شده است.
1. نیاز Data Annotation علامت گذاری شده
2. نیاز مشخصه Expression Data Annotation.
ویژگی Expression Data Annotation داده ، بیان منظم را به عنوان اولین پارامتر می پذیرد. عبارت منظم فقط به فایلهای تصویری از نوع PNG ، JPG و GIF اجازه می دهد.
خصوصیات Data Annotation مورد نیاز و ویژگی های Expression Data Annotation داده شده با یک پیام خطا با یک مقدار رشته مشخص شده اند. همانطور که از نام آن پیداست ، این مقدار رشته در صورت عدم موفقیت اعتبار مربوطه به کاربر نمایش داده می شود.

public class FileModel
{
    [Required(ErrorMessage = "Please select file.")]
    [RegularExpression(@"([a-zA-Z0-9\s_\\.\-:])+(.png|.jpg|.gif)$", ErrorMessage = "Only Image files allowed.")]
    public HttpPostedFileBase PostedFile { get; set; }
}

فضاهای نام
شما باید نامهای زیر را وارد کنید.

using System.IO;

Controller
شاخص روش Action به طور پیش فرض از عملکرد GET پشتیبانی می کند و از این رو روش دیگری برای عملکرد POST ایجاد می شود که پارامتر نوع HttpPostedFileBase را می پذیرد.
توجه :

نام پارامتر HttpPostedFileBase و نام Model Properties باید دقیقاً یکسان باشد ، در غیر اینصورت پارامتر HttpPostedFileBase NULL خواهد بود.
ابتدا یک بررسی انجام می شود که آیا Directory (Folder) وجود دارد اگر نبود ایجاد و سپس فایل در Directory (Folder) ذخیره شود.

public class HomeController : Controller
{
    // GET: Home
    [HttpGet]
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase postedFile)
    {
        string path = Server.MapPath("~/Uploads/");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
 
        if (postedFile != null)
        {
            string fileName = Path.GetFileName(postedFile.FileName);
            postedFile.SaveAs(path + fileName);
            ViewBag.Message += string.Format("<b>{0}</b> uploaded.<br />", fileName);
        }
 
        return View();
    }
}

View
در داخل View ، در اولین خط کلاس FileModel به عنوان Model برای View اعلام می شود.
View شامل یک فرم HTML است که با استفاده از روش Html.BeginForm با پارامترهای زیر ایجاد شده است.
ActionName - نام عمل در این حالت Index است.
ControllerName - نام Controller در این حالت Home است.
FormMethod - این روش فرم یعنی GET یا POST را مشخص می کند. در این حالت روی POST تنظیم می شود.
HtmlAttributes - این مجموعه می تواند ویژگی های فرم اضافی را مشخص کند. در اینجا باید enctype = "multipart / form-data" را مشخص کنیم که برای بارگذاری فایل ها ضروری است.
در داخل View ، از دو عملکرد HTML Helper استفاده شده است:
1. Html.TextBoxFor - ایجاد یک عنصر Fileupload برای ویژگی Model. ویژگی نوع به عنوان فایل مشخص شده و از این رو خروجی به جای TextBox یک عنصر HTML Fileupload است.
2. Html.ValidationMessageFor - نمایش پیام اعتبار سنجی برای ویژگی.
همچنین دکمه ارسال وجود دارد که هنگام کلیک ، فرم ارسال می شود.
بسته های اسکریپت jQuery و jQuery Validation در انتهای Modelبا استفاده از عملکرد Scriptts.Render ارائه می شوند.

@model FileUpload_Validation_MVC.Models.FileModel
 
@{
    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;
        }
    </style>
</head>
<body>
    <div>
        @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {
            <span>Select File:</span>
            @Html.TextBoxFor(m => m.PostedFile, new { type = "file"})
            <br/>
            @Html.ValidationMessageFor(m => m.PostedFile, "", new { @class = "error" })
            <hr/>
            <input type="submit" value="Upload"/>
            <br/>
            <span style="color:green">@Html.Raw(ViewBag.Message)</span>
        }
    </div>
</body>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
</html>

 


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

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