• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解读ASP.NET 5 & MVC6系列教程(17):MVC中的其他新特性

    (GlobalImport全局导入功能)

    默认新建立的MVC程序中,在Views目录下,新增加了一个_GlobalImport.cshtml文件和_ViewStart.cshtml平级,该文件的功能类似于之前Views目录下的web.config文件,之前我们在该文件中经常设置全局导入的命名空间,以避免在每个view文件中重复使用@using xx.xx语句。
    默认的示例如下:

    @using BookStore
    @using Microsoft.Framework.OptionsModel
    @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"

    上述代码表示,引用BookStoreMicrosoft.Framework.OptionsModel命名空间,以及Microsoft.AspNet.Mvc.TagHelpers程序集下的所有命名空间。

    关于addTagHelper功能,我们已经在TagHelper中讲解过了

    注意,在本例中,我们只引用了BookStore命名空间,并没有引用BookStore.Controllers命名空间,所以我们在任何视图中,都无法访问HomeController类(也不能以Controllers.HomeController的形式进行访问),希望微软以后能加以改进。

    获取IP相关信息

    要获取用户访问者的IP地址相关信息,可以利用依赖注入,获取IHttpConnectionFeature的实例,从该实例上可以获取IP地址的相关信息,实例如下:

    var connection1 = Request.HttpContext.GetFeatureIHttpConnectionFeature>();
    var connection2 = Context.GetFeatureIHttpConnectionFeature>();
    
    var isLocal = connection1.IsLocal;         //是否本地IP 
    var localIpAddress = connection1.LocalIpAddress;  //本地IP地址
    var localPort = connection1.LocalPort;       //本地IP端口
    var remoteIpAddress = connection1.RemoteIpAddress; //远程IP地址
    var remotePort = connection1.RemotePort;      //本地IP端口

    类似地,你也可以通过IHttpRequestFeatureIHttpResponseFeatureIHttpClientCertificateFeatureIWebSocketAcceptContext等接口,获取相关的实例,从而使用该实例上的特性,上述接口都在命名空间Microsoft.AspNet.HttpFeature的下面。

    文件上传

    MVC6在文件上传方面,给了新的改进处理,举例如下:

    form method="post" enctype="multipart/form-data">
      input type="file" name="files" id="files" multiple />
    input type="submit" value="submit" />
    /form>

    我们在前端页面定义上述上传表单,在接收可以使用MVC6中的新文件类型IFormFile,实例如下:

    [HttpPost]
    public async TaskIActionResult> Index(IListIFormFile> files)
    {
      foreach (var file in files)
      {
        var fileName = ContentDispositionHeaderValue
          .Parse(file.ContentDisposition)
          .FileName
          .Trim('"');// beta3版本的bug,FileName返回的字符串包含双引号,如"fileName.ext"
        if (fileName.EndsWith(".txt"))// 只保存txt文件
        {
          var filePath = _hostingEnvironment.ApplicationBasePath + "\\wwwroot\\"+ fileName;
          await file.SaveAsAsync(filePath);
        }
      }
      return RedirectToAction("Index");// PRG
    }
    您可能感兴趣的文章:
    • .NET6中哈希算法的简化用法的实现
    • ASP.NET Core项目配置教程(6)
    • ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)实例
    • ASP.NET MVC异步获取和刷新ExtJS6 TreeStore
    • 解读ASP.NET 5 & MVC6系列教程(16):自定义View视图文件查找逻辑
    • .NET 6 中的隐式命名空间引用
    上一篇:解读ASP.NET 5 & MVC6系列教程(16):自定义View视图文件查找逻辑
    下一篇:解析ABP框架中的数据传输对象与应用服务
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    解读ASP.NET 5 & MVC6系列教程(17):MVC中的其他新特性 解读,ASP.NET,amp,MVC6,系列,