zoukankan      html  css  js  c++  java
  • ASP.NET MVC 应用程序初学者常见问题汇总

    Q: 如何为Html.TextBoxFor控件添加多个属性?

    A: @Html.TextBoxFor(m => m.Email, new Dictionary<string, object>() { {"class", "input-material" }, {"data-msg", "Please enter your username" },{ "required", "true"} })

    Q: 如何为输出HTML格式的字符串?

    A: 输出HTML格式的文本主要使用@Html.Raw。如果文本是Model的属性:@Html.Raw(Model.HTMLText);如果文本是@foreach中的子项属性:@Html.Raw(item.HTMLText)

    Q: 如何在视图中添加下拉框?

    A: @Html.DropDownListFor(m => m.PropertyName, ViewBag.PropertyList as List<SelectListItem>, "-请选择-"),第三个参数用于在下拉框中添加一个默认值。

    var propertyList = new List<SelectListItem>();
    propertyList.Add(new SelectListItem() { Text = "", Value = "" });
    ViewBag.PropertyList=propertyList;

    Q: 如何使用input标签上传文件?

    A: 视图文件内容

    @using(Html.BeginForm("Upload","Home",FormMethod.Post,new { enctype = "multipart/form-data" }))
    {
        <input type="file" id="fileupload" name="fileupload" size="25" /><input type="submit" value="上传"/>
    }

    Action核心代码

    var file = Request.Files["fileupload"];
    var newFileName = file.FileName.Substring(file.FileName.LastIndexOf(@"") + 1);
    var filepath = "/Uploads/" + Guid.NewGuid() + newFileName;
    file.SaveAs(Server.MapPath(filepath));

    Q: 如何扩展User.Identity的可用方法(类似GetUserName方法)?

    A:C#3.0时引入了扩展方法(Extension Methods)特性,由于User.Identity为IIdentity接口,因此,我们只需要扩展IIdentity接口的方法即可。

    在模型文件夹中创建一个名为Extensions的新文件夹,并在Extensions文件夹中添加一个新类:IIdentityEx.cs

    using System.Security.Claims;
    using System.Security.Principal;
    
    namespace xx.Models.Extensions{
        public static class IIdentityEx
        {
            public static string GetEmail(this IIdentity identity)
            {
                var claim = ((ClaimsIdentity)identity).FindFirst("Email");
                return (claim != null) ? claim.Value : string.Empty;
            }
        }
    }

    修改IdentityModels.cs文件中ApplicationUser类的GenerateUserIdentityAsync方法:

        public class ApplicationUser : IdentityUser
        {
            public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
            {
                // 请注意,authenticationType 必须与 CookieAuthenticationOptions.AuthenticationType 中定义的相应项匹配
                var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
                
                // 在此处添加自定义用户声明
                userIdentity.AddClaim(new Claim("Email", this.Email.ToString()));
    
                return userIdentity;
            }
        }

    在任意视图文件中添加@using xx.Models.Extensions后,就可以像使用@User.Identity.GetUserName()一样使用@User.Identity.GetEmail()来获取用户Email信息了。

  • 相关阅读:
    蒙版
    雪碧图
    用html来设置一个用户登录网页
    用vs来实现反序输出的效果
    用vs来写一段判断是不是水仙花数的代码
    Node.js使用Sequelize操作MySQL
    修改 xampp 默认端口号
    TCP/IP详解学习笔记(1)基本概念
    CSS常用标签
    Linux 系统中 sudo 命令的 10 个技巧
  • 原文地址:https://www.cnblogs.com/mercator/p/12356735.html
Copyright © 2011-2022 走看看