ASP.NET 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"文件夹:

到此这篇关于ASP.NET MVC为用户创建专属文件夹的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Asp.net获取服务器指定文件夹目录文件并提供下载的方法

    本文实例讲述了Asp.net获取服务器指定文件夹目录文件并提供下载的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: string dirPath = HttpContext.Current.Server.MapPath("uploads/"); if (Directory.Exists(dirPath)) {        //获得目录信息        DirectoryInfo dir = new DirectoryInfo(dirPath);       

  • ASP.NET 保留文件夹详解

    1. Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需要引用的任何其他代码的可部署程序集.该目录中存在的任何.dll文 件将自动地链接到应用程序.如果在该文件夹中留有不用的或过期的文件,则可能出现"二义性引用(ambiguous reference)"异常的风险.换句话说,如果两个不同的程序集定义相同的类(相同的命名空间和名称),则ASP.NET运行库不能决定应该使用哪一 个程序集,从而抛出一个异常.在开发时,当我们重新命名一个项目或一个程序集的名称时,这是常见的错误

  • ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享

    在Global中  Application_Start 添加 如: 复制代码 代码如下: void Application_Start(object sender, EventArgs e)    {        //在应用程序启动时运行的代码        System.Reflection.PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", System.Reflect

  • asp.net遍历文件夹下所有子文件夹并绑定到gridview上的方法

    遍历文件夹下所有子文件夹,并且遍历配置文件某一节点中所有key,value并且绑定到GridView上 Helper app_Helper = new Helper(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { gvwBind(); } #region 绑定GridView /// <summary> //

  • .NET创建、删除、复制文件夹及其子文件的实例方法

    复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace WinFormsApp_OperateFileAndFolder { public class OperateFileFolder { /// <summary> /// 创建文件夹 /// </summary> public strin

  • asp.net编程实现删除文件夹及文件夹下文件的方法

    本文实例讲述了asp.net编程实现删除文件夹及文件夹下文件的方法.分享给大家供大家参考,具体如下: //获取文件夹 string path = Server.MapPath("Image"); //获取文件夹中所有图片 if (Directory.GetFileSystemEntries(path).Length > 0) { //遍历文件夹中所有文件 foreach (string file in Directory.GetFiles(path)) { //文件己存在 if

  • ASP.NET 上传文件到共享文件夹的示例

    目录 上传文件代码 web.config 工具方法 常量 具体上传文件代码 创建共享文件夹参考资料 上传文件代码 web.config <!--上传文件配置,UploadPath值一定是服务器ip,内网ip最好--> <add key="UploadPath" value="\\172.21.0.10\File" /> <add key="DownloadPath" value="http://x.x.x.

  • ASP.NET访问共享文件夹的详细步骤

    假设找找看的ASP.NET程序在A服务器,索引文件在B服务器的ZzkIndex共享文件夹中,访问地址是\\192.168.18.18\ZzkIndex\.要实现就是在A服务器的ASP.NET程序中能读写共享文件夹\\192.168.18.18\ZzkIndex\中的文件. 具体操作步骤: (注:A服务器为ASP.NET程序所在服务器,B服务器为共享文件夹所在服务器) ①在两台服务器上建立相同用户名.相同密码的Windows帐户(A与B服务器都要建),比如假设这里用户名是ZzkIndexer,密码

  • ASP.NET Core中的wwwroot文件夹

    ASP.NET Core中wwwroot文件夹 默认情况下,ASP.NET Core应用程序中的wwwroot文件夹被视为webroot文件夹,并且该文件夹或目录应位于根项目文件夹中. 在ASP.NET Core应用程序中,静态文件可以存储在webroot文件夹下的任何文件夹中,并且可以使用指向该根目录的相对路径进行访问. 添加wwwroot(webroot)文件夹 当使用Web和MVC模板创建ASP.NET Core Web应用程序时,默认情况下,该文件夹(wwwroot)在根项目文件夹中创建

  • ASP.NET MVC为用户创建专属文件夹

    假设需要为用户创建专属文件夹,文件夹名为用户名,并且需要根据用户类型在不同的文件夹下创建目标文件夹. 在F盘创建"Users"文件夹,在其中创建"Gold"文件夹,用来归类"金牌会员",创建"Silver",用来归类"银牌会员". 关于用户的Model. using System.ComponentModel.DataAnnotations; namespace MvcApplication1.Models

  • Asp.Net MVC记住用户登录信息下次直接登录功能

    有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo可以到百度云和码云下载, 百度云下载链接:https://pan.baidu.com/s/19pL-koHI9UnVd4bK3Fpuyg 密码: nud3 马云下载链接:https://gitee.com/WuFengZui/RememberLoginDemo      [没有下载链接的都是耍流氓 

  • web 开发之创建本地文件夹的实现方法

    web 开发之创建本地文件夹的实现方法 filemanage_util.fullPath 就是创建文件的路径 这是跨平台的创建文件夹,不像Android那样还要通过 Environment.getExternalStorageDirectory() 的原生代码来创建 实现代码: document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { // alert('onde

  • django创建css文件夹的具体方法

    Django中的静态文件夹static在创建好Django项目时默认是没有的,需要我们手动自己去创建,static文件夹里主要存放一些能暴露给外界访问服务器时的资源. 一.手动创建一个static空文件夹 二.修改settings配置文件 三.在static下添加bootstrap本地文件和css,js文件夹 四.在temlpates下的html文件中,配置bootstrap的本地文件 至此,我们便成功的在Django中创建了CSS文件. 以上就是django创建css文件夹的具体方法的详细内容

  • IDEA 创建多级文件夹的操作

    一般使用.来创建文件夹只能产生一个文件夹 例如:com.immer.monitor.persistence这样创建只会产生一个文件夹不能展开. 创建多级文件夹方法1 在项目那一栏设置中把Compact Middle Packages的√取消.如图: 创建多级文件夹方法2 直接使用/来代替.创建 (此方法根据版本不同有可能会失效)(推荐第一种方法) 补充:IntelliJ IDEA多级文件夹显示的坑 使用IntelliJ IDEA创建多级文件夹时,文件夹名为com.immer.monitor.pe

  • Asp.net mvc验证用户登录之Forms实现详解

    这里我们采用asp.net mvc 自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样. 第一步:创建asp.net mvc项目, 在项目的App_Start文件夹下面有一个FilterConfig.cs,在这个文件中可以注册全局的过滤器.我们在文件中添加AuthorizeAttribute过滤器如下: public class FilterConfig { public static void RegisterGlobalFilters(Glo

  • 用Html5与Asp.net MVC上传多个文件的实现代码

    复制代码 代码如下: <form action="/Home/Upload" enctype="multipart/form-data" id="form2" method="post"> <input type="file" name="fileToUpload" id="fileToUpload2" multiple="multiple

  • ASP.NET设计网络硬盘之查看文件夹实现代码

    就像操作本地的计算机一样,需要为每个网络用户提供各自的一块硬盘空间,用户登录后便可以对自己的空间进行管理.管理是多方面的,首先用户应该能看到自己文件夹下的所有内容,另外需要提供多级文件夹目录的支持. 下面要介绍的实例包括"网上硬盘"的许多功能,将一步步为大家进行介绍.首先创建工程实例,然后进行主界面的设计,最后对各个功能的实现分别进行介绍. 新工程创建 新工程创建的步骤如下: (1) 打开MicroSoft Visual Studio.NET应用程序. (2) 选择"文件&q

  • ASP.NET设计网络硬盘之删除文件夹实现代码

    界面布置 主界面设计中有个"删除"按钮,其(ID)为btnDelete.用户在目录浏览中选中要删除的项后,单击该按钮就可以完成删除工作. 代码实现 在"设计"面板中双击"删除"按钮,为其添加事件处理程序如下: 复制代码 代码如下: private void BtnDelete_Click(object sender, System.EventArgs e) { DeleteThings(FileList.SelectedItem.Text); }

  • mysql8.0.14.zip安装时自动创建data文件夹失败服务无法启动

    今天重装系统后,在自己电脑上重新安装mysql,下载ZIP文件后解压,按照网上的教程,一步一个坑,还是始终卡在data文件夹自动创建失败上导致服务无法启动,而手动创建的话初始化data文件夹的时候只会创建2个文件.服务依然无法启动-- 最后盯着路径看了N久,想到会不会是路径上的非法字符问题,原解压文件出来后的文件夹名称时mysql-8.0.14-winx64,把文件夹名称改为mysql后成功自动创建了data文件夹,启动服务成功. 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多

随机推荐