MVC为用户创建专属文件夹
假设需要为用户创建专属文件夹,文件夹名为用户名,并且需要根据用户类型在不同的文件夹下创建目标文件夹。
在F盘创建"Users"文件夹,在其中创建"Gold"文件夹,用来归类"金牌会员",创建"Silver",用来归类"银牌会员"。
关于用户的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; }
}
}
创建关于用户类型的枚举。
using MvcApplication1.Extension; namespace MvcApplication1.Models
{
public enum UserTypeEnum
{
Gold = 0,
Silver = 1
}
}
用户类型最终会以下拉框的形式呈现在视图中。如果想在下拉框中显示中文该如何做?
--可以为枚举项打上自定义的Attribute,并提供一个属性,最终被读到视图中的下拉框,修改UserTypeEnum。
using MvcApplication1.Extension; namespace MvcApplication1.Models
{
public enum UserTypeEnum
{
[EnumDisplayName("金牌会员")]
Gold = 0,
[EnumDisplayName("银牌会员")]
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;
}
}
}
}
以上,提供构造函数以便把枚举项的中文名赋值给字段_displayName,提供属性DisplayName以便把枚举项的中文名最终被访问。
另外,视图中的Html.DropDownListFor()要求集合数据源是IEnumerable<SelectListItem>类型,所以,有必要写一个帮助方法,把枚举项的中文名读取出来并以IEnumerable<SelectListItem>类型返回。
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Web.Mvc; namespace MvcApplication1.Extension
{
public class EnumExt
{
/// <summary>
/// 获取枚举成员的自定义Attribute的一个属性值
/// </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)
{
//创建用户文件夹
CreateDir(user.UserType, user.UserName); return Content("用户专属文件夹创建成功!");
}
return View(user);
} //根据文件名和用户类型创建文件夹
private static void CreateDir(short userType, string subdir)
{
//需要创建的文件夹的路径
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="创建"/>
}
运行:

点击"创建":

在F:\Users\Gold下多了一个"Darren"文件夹:

MVC为用户创建专属文件夹的更多相关文章
- MVC文件上传09-使用客户端jQuery-File-Upload插件和服务端Backload组件让每个用户有专属文件夹,并在其中创建分类子文件夹
为用户创建专属上传文件夹后,如果想在其中再创建分类子文件夹,该怎么做?可以在提交文件的视图中再添加一个隐藏域,并设置 name="uploadContext". 相关兄弟篇: MV ...
- MVC文件上传08-使用客户端jQuery-File-Upload插件和服务端Backload组件让每个用户有专属文件夹
当需要为每个用户建立一个专属上传文件夹的时候,可以在提交文件的视图中添加一个隐藏域,并设置name="objectContext". 相关兄弟篇: MVC文件上传01-使用jque ...
- 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
- 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
- MFC 如何创建浏览文件夹的对话框
如何创建浏览文件夹的对话框 如何创建浏览文件夹的对话框 CString CXXXXDlg::GetOpenfolderPath() { BROWSEINFO bi; ZeroMemory(&b ...
- 命令行创建畸形文件夹+畸形目录管理工具(DeformityPath)
命令行创建畸形文件夹: 第一步:在运行中输入cmd,回车,打开命令行窗口 第二步:在命令行窗口中切换到想要建立文件夹的硬盘分区,如D盘(输入d:) 第三步:输入 MD 123..\ 回车,注意文件夹名 ...
- eclipse创建一个文件夹
如何给eclipse创建一个文件夹,便于项目的管理:有时我们的eclipse中会有很多项目的,有的是公司的如Project1,Project2,Project3....还有的呢, 也可能是自己平时做的 ...
- Python 创建递归文件夹
# 创建递归文件夹 def createfiles(filepathname): try: os.makedirs(filepathname) except Exception as err: pri ...
- MVC的App_Code这个特殊文件夹
对于一个之前编译一点都没有问题的项目,突然间调试就出现了一个报错: 然而你会天真的认为,这个真的是using的问题吗!别傻了,我检查了一遍又一遍: 首先这个是有using的! 其实代码编写上也是没有报 ...
随机推荐
- java 判断字符串是否相等
判断字符串相等我们经常习惯性的写上if(str1==str2),这种写法在Java中可能会带来问题. java中判断字符串是否相等有两种方法: 1.用“==”运算符,该运算符表示指向字符串的引用是否相 ...
- sql server 2000系统表sysproperties在SQL 2008中无效的问题
Sqlserver有一个扩展属性系统表sysproperties,因为只接触过MSSQL2005及以后的版本,在生产库2008版本及联机文档上搜了下都找不到这个系统表,后来发现这个系统表在2005版本 ...
- Celery 框架学习笔记(生产者消费者模式)
生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产 ...
- Python学习笔记之爬虫
爬虫调度端:启动爬虫,停止爬虫,监视爬虫运行情况 URL管理器:对将要爬取的和已经爬取过的URL进行管理:可取出带爬取的URL,将其传送给“网页下载器”网页下载器:将URL指定的网页下载,存储成一个字 ...
- Ionic Js十五:对话框
$ionicPopup ionic 对话框服务允许程序创建.显示弹出窗口. $ionicPopup 提供了3个方法:alert(), prompt(),以及 confirm() . 实例 HTML 代 ...
- LAMP环境使用Composer安装Laravel
安装Composer 因为使用的Ubuntu服务器,所以我们使用apt安装: 1 $ sudo apt install composer 安装Laravel 首先创建一个项目目录,进入新目录使用Com ...
- 20169211《Linux内核原理与分析》课程总结
第一周作业:linux入门学习:熟悉操作linux的基础命令 第二周作业:实验反汇编一个简答的C程序,学习汇编代码的工作过程 第三周作业:学习linux内核的启动过程 第四周作业:学习linux内核进 ...
- HDU - 1022 Train Problem I STL 压栈
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- sort sign numeric
//JS001 EXEC PGM=SORT //* ...
- NetCore+Dapper WebApi架构搭建(六):添加JWT认证
WebApi必须保证安全,现在来添加JWT认证 1.打开appsettings.json添加JWT认证的配置信息 2.在项目根目录下新建一个Models文件夹,添加一个JwtSettings.cs的实 ...