ASP.NET?MVC為用戶創(chuàng)建專屬文件夾
假設(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)文章
ASP.NET的HtmlForm控件學(xué)習(xí)及Post與Get的區(qū)別概述
HtmlForm 控件用于控制form元素,本文主要介紹下HtmlForm控件的Method/Action方法(要提交數(shù)據(jù)的頁面,即數(shù)據(jù)要傳送至哪個(gè)網(wǎng)址)及Post與Get的區(qū)別感興趣的朋友可以了解下,或許對你學(xué)習(xí)HtmlForm控件有所幫助2013-02-02.NET6?ConfigurationManager的實(shí)現(xiàn)及使用方式
這篇文章主要介紹了.NET6?ConfigurationManager的實(shí)現(xiàn),我們上面展示的這一部分的ConfigurationManager代碼,其實(shí)就是替代了原來的ConfigurationBuilder類的功能,需要的朋友可以參考下2021-12-12ASP.NET使用HttpWebRequest讀取遠(yuǎn)程網(wǎng)頁源代碼
本文分享了一個(gè)使用HttpWebRequest讀取遠(yuǎn)程網(wǎng)頁的案例,供大家參考學(xué)習(xí)。2016-03-03ASP.NET?MVC擴(kuò)展帶驗(yàn)證的單選按鈕
這篇文章實(shí)現(xiàn)了ASP.NET?MVC擴(kuò)展帶驗(yàn)證的單選按鈕功能,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09.NET Core 實(shí)現(xiàn)微信小程序支付功能(統(tǒng)一下單)
最近公司研發(fā)了幾個(gè)電商小程序,還有一個(gè)核心的電商直播,只要是電商一般都會(huì)涉及到交易信息,離不開支付系統(tǒng),這里我們統(tǒng)一實(shí)現(xiàn)小程序的支付流程。感興趣的朋友跟隨小編一起看看吧2019-09-09win2003服務(wù)器.NET+IIS環(huán)境常見問題排障總結(jié)
在使用iis運(yùn)行asp.net環(huán)境的時(shí)候,總是會(huì)或多或少的碰到各種各樣的.net運(yùn)行錯(cuò)誤,這里特別從網(wǎng)絡(luò)整理了下,方便需要的朋友。2011-08-08asp.net core MVC 過濾器之ActionFilter過濾器(2)
這篇文章主要為大家詳細(xì)介紹了asp.net core MVC過濾器之ActionFilter過濾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08ASP.NET中在一般處理程序中使用session的簡單介紹
這篇文章介紹了ASP.NET中在一般處理程序中使用session,有需要的朋友可以參考一下2013-10-10