Interpreting ASP.NET 5 & MVC6 Series (17): Other new features in MVC

Interpreting ASP.NET 5 & MVC6 Series (17): Other new features in MVC

(GlobalImport global import function)

In the default newly created MVC program, a new _GlobalImport.cshtml file and a _ViewStart.cshtml file are added to the Views directory. The function of this file is similar to the web.config file in the Views directory. Previously, we often set the global import namespace in this file to avoid repeating the @using xx.xx statement in each view file.

The default example is as follows:

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

The above code indicates that the BookStore and Microsoft.Framework.OptionsModel namespaces, as well as all namespaces under the Microsoft.AspNet.Mvc.TagHelpers assembly are referenced.

We have already explained the addTagHelper function in TagHelper. Note that in this example, we only referenced the BookStore namespace and did not reference the BookStore.Controllers namespace, so we cannot access the HomeController class in any view (nor can we access it as Controllers.HomeController). I hope Microsoft can improve this in the future.

Get IP related information

To obtain the IP address information of the user visitor, you can use dependency injection to obtain an instance of IHttpConnectionFeature, from which you can obtain the relevant information of the IP address. The example is as follows:

var connection1 = Request.HttpContext.GetFeature (); var connection2 = Context.GetFeature (); var isLocal = connection1.IsLocal; //Is it a local IP? var localIpAddress = connection1.LocalIpAddress; //Local IP address var localPort = connection1.LocalPort; //Local IP port var remoteIpAddress = connection1.RemoteIpAddress; //Remote IP address var remotePort = connection1.RemotePort; //Local IP port

Similarly, you can also obtain related instances through interfaces such as IHttpRequestFeature, IHttpResponseFeature, IHttpClientCertificateFeature, and IWebSocketAcceptContext, and use the features on the instance. The above interfaces are all under the namespace Microsoft.AspNet.HttpFeature.

File upload

MVC6 provides new improvements in file upload, as shown below:

  1. < form   method = "post"   enctype = "multipart/form-data" >  
  2. < input   type = "file"   name = "files"   id = "files" multiple />  
  3. < input   type = "submit"   value = "submit"   />  
  4. </ form >  

We define the above upload form on the front-end page, and can use the new file type IFormFile in MVC6 when receiving it. The example is as follows:

[HttpPost]
public async Task Index(IList files) { foreach (var file in files) { var fileName = ContentDispositionHeaderValue .Parse(file.ContentDisposition) .FileName .Trim('"');// Beta3 version bug, the string returned by FileName contains double quotes, such as "fileName.ext" if (fileName.EndsWith(".txt"))// Only save txt files { var filePath = _hostingEnvironment.ApplicationBasePath + "\\wwwroot\\"+ fileName; await file.SaveAsAsync(filePath); } } return RedirectToAction("Index");// PRG

<<:  Interpreting ASP.NET 5 & MVC6 Series (16): Customizing View View File Search Logic

>>:  What "truths" can your brothers and sisters learn from the IT tycoons' choices of majors in the college entrance examination?

Recommend

Inventory of the most effective App promotion channels at present!

What exactly is APP promotion for? Is it a channe...

They were in their prime that year... Salute to their youth!

Be determined to serve the country and write a st...

World COPD Day | Breathe freely without any obstruction

Author: Nie Shan, deputy chief physician of respi...

Solve the 20 greatest mysteries of the world

Unraveling the 20 Greatest Unsolved Mysteries of t...

Student Zhang, you have been called by the fire department!

Recently, on a short video platform Recording the...