欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET?MVC為用戶創(chuàng)建專屬文件夾

 更新時(shí)間:2022年08月05日 08:50:37   作者:Darren?Ji  
這篇文章介紹了ASP.NET?MVC為用戶創(chuàng)建專屬文件夾的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

假設(shè)需要為用戶創(chuàng)建專屬文件夾,文件夾名為用戶名,并且需要根據(jù)用戶類型在不同的文件夾下創(chuàng)建目標(biāo)文件夾。

在F盤創(chuàng)建"Users"文件夾,在其中創(chuàng)建"Gold"文件夾,用來歸類"金牌會(huì)員",創(chuàng)建"Silver",用來歸類"銀牌會(huì)員"。

關(guān)于用戶的Model。

using System.ComponentModel.DataAnnotations;

namespace MvcApplication1.Models
{
    public class User
    {
        public int Id { get; set; }

        [Display(Name = "用戶類型")]
        [Required(ErrorMessage = "必填")]
        public short UserType { get; set; }

        [Display(Name = "用戶名")]
        [Required(ErrorMessage = "必填")]
        [StringLength(10, MinimumLength = 2, ErrorMessage = "長度2-10位")]
        public string UserName { get; set; }
    }
}

創(chuàng)建關(guān)于用戶類型的枚舉。

using MvcApplication1.Extension;

namespace MvcApplication1.Models
{
    public enum UserTypeEnum
    {
        Gold = 0,
        Silver = 1
    }
}

用戶類型最終會(huì)以下拉框的形式呈現(xiàn)在視圖中。如果想在下拉框中顯示中文該如何做?

--可以為枚舉項(xiàng)打上自定義的Attribute,并提供一個(gè)屬性,最終被讀到視圖中的下拉框,修改UserTypeEnum。

using MvcApplication1.Extension;

namespace MvcApplication1.Models
{
    public enum UserTypeEnum
    {
        [EnumDisplayName("金牌會(huì)員")]
        Gold = 0,
        [EnumDisplayName("銀牌會(huì)員")]
        Silver = 1
    }
}

EnumDisplayNameAttribute。

using System;

namespace MvcApplication1.Extension
{
    public class EnumDisplayNameAttribute : Attribute
    {
        private string _displayName;
        public EnumDisplayNameAttribute(string displayName)
        {
            _displayName = displayName;
        }

        public string DisplayName
        {
            get
            {
                return _displayName;
            }
        }
    }
}

以上,提供構(gòu)造函數(shù)以便把枚舉項(xiàng)的中文名賦值給字段_displayName,提供屬性DisplayName以便把枚舉項(xiàng)的中文名最終被訪問。

另外,視圖中的Html.DropDownListFor()要求集合數(shù)據(jù)源是IEnumerable<SelectListItem>類型,所以,有必要寫一個(gè)幫助方法,把枚舉項(xiàng)的中文名讀取出來并以IEnumerable<SelectListItem>類型返回。

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Web.Mvc;

namespace MvcApplication1.Extension
{
    public class EnumExt
    {
        /// <summary>
        /// 獲取枚舉成員的自定義Attribute的一個(gè)屬性值
        /// </summary>
        /// <param name="e">枚舉成員</param>
        /// <returns></returns>
        public static string GetEnumDescription(object e)
        {
            //獲取枚舉成員的Type對象
            Type t = e.GetType();

            //獲取Type對象的所有字段
            FieldInfo[] ms = t.GetFields();

            //遍歷所有字段
            foreach (FieldInfo f in ms)
            {
                if (f.Name != e.ToString())
                {
                    continue;
                }

                if (f.IsDefined(typeof(EnumDisplayNameAttribute), true))
                {
                    return (f.GetCustomAttributes(typeof(EnumDisplayNameAttribute), true)[0] as EnumDisplayNameAttribute).DisplayName;
                }
            }
            return e.ToString();
        }

        public static List<SelectListItem> GetSelectList(Type enumType)
        {
            List<SelectListItem> selectList = new List<SelectListItem>();
            //selectList.Add(new SelectListItem{Text = "--請選擇--",Value = ""});
            foreach (object e in Enum.GetValues(enumType))
            {
                selectList.Add(new SelectListItem { Text = GetEnumDescription(e), Value = ((int)e).ToString() });
            }
            return selectList;
        }
    }
}

在HomeController中。

using System.IO;
using System.Web.Mvc;
using MvcApplication1.Extension;
using MvcApplication1.Models;

namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult AddUser()
        {
            ViewData["ut"] = EnumExt.GetSelectList(typeof (UserTypeEnum));
            return View();
        }

        //根文件夾
        private const string main_Dir = @"F:/Users";

        [HttpPost]
        public ActionResult AddUser(User user)
        {
            ViewData["ut"] = EnumExt.GetSelectList(typeof(UserTypeEnum));
            if (ModelState.IsValid)
            {
                //創(chuàng)建用戶文件夾
                CreateDir(user.UserType, user.UserName);

                return Content("用戶專屬文件夾創(chuàng)建成功!");
            }
            return View(user);
        }

        //根據(jù)文件名和用戶類型創(chuàng)建文件夾
        private static void CreateDir(short userType, string subdir)
        {
            //需要?jiǎng)?chuàng)建的文件夾的路徑
            string path = "";
            switch (userType)
            {
                case (short)UserTypeEnum.Gold:
                    path = main_Dir + "/" + "Gold/" + subdir;
                    break;
                case (short)UserTypeEnum.Silver:
                    path = main_Dir + "/" + "Silver/" + subdir;
                    break;
                default:
                    path = main_Dir + "/" + "Silver/" + subdir;
                    break;
            }
            Directory.CreateDirectory(path);
        }
    }
}

在Home/Index.cshtml中。

@model MvcApplication1.Models.User

@{
    ViewBag.Title = "AddUser";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<style type="text/css">
    ul {
        list-style-type: none;
    }
</style>

<h2>AddUser</h2>

@using (Html.BeginForm("AddUser", "Home", FormMethod.Post, new {id = "addForm"}))
{
    <ul>
        <li>
            @Html.LabelFor(u => u.UserName)
            @Html.EditorFor(u => u.UserName)
            @Html.ValidationMessageFor(u => u.UserName)
        </li>
        <li>
            @Html.LabelFor(u => u.UserType)
            @Html.DropDownListFor(u => u.UserType, (List<SelectListItem>)ViewData["ut"],"==選擇用戶類型==")
            @Html.ValidationMessageFor(u => u.UserType)
        </li>
    </ul>
    
    <input type="submit" value="創(chuàng)建"/>
}

運(yùn)行:

點(diǎn)擊"創(chuàng)建":

在F:\Users\Gold下多了一個(gè)"Darren"文件夾:

到此這篇關(guān)于ASP.NET MVC為用戶創(chuàng)建專屬文件夾的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論