ASP.NET MVC5开发记录

摘要:
无限数据大小请求。QueryString[“key”]用于GET的数据(主要是URL参数),POST操作方法以及URL中的其他参数(reference://www.jb51.cc/csharp/95096。html)使用ASP.netMVC将表单POST到控制器或请求。QueryString[“id”]方法:通常是mvc中默认的URL地址写入格式:

Request 和 Request.form 和 Request.QueryString 的区别:

(参考:https://www.cnblogs.com/tianguook/p/3592531.html

Request.Form["key"] 获取对应key的value值,用于POST过来的数据,不限制数据大小

Request.QueryString["key"] 用于GET的数据(主为URL参数),数据大小限制2k

Request["key"] 依次从 Cookies, Form, QueryString, ServerVariables 查找key。

具有来自URL的附加参数的POST操作方法

(参考:https://www.jb51.cc/csharp/95096.html

使用ASP.net MVC可以将表单POST到一个控制器操作,其中包括不是表单中的参数,而是从URL?

例如:

GroupController中的Action方法:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(int idOne,int idTwo,Model model)
{ ... }

路线:

"{controller}/{action}/{idOne}/{idTwo}"

发布网址:

/Employee/Show/1/42

Razor页面,表单声明:

Html.BeginForm("action","controller",new { idOne=1,idTwo=42 },FormMethod.Post,new { class="fclass", id="fid" });

 

POST方法,读取URL参数的同时,获取表单提交数据:

1,表单提交:

表单的提交,会将表单中,带有 name 属性的变量整合起来,形成提交的数据。

另外,需要一个class,该类的字段要包含表单中所有input 的name 对应的值,并且在类中为对应的字段生成getter 与setter 方法。(如sql 数据表的class 就可以作为这样一个类)

如表单中有这么一个input:<input name="data1">

那么对应的class 中,应该有这么一个字段: public string data1 { get; set; }

ASP.NET MVC5开发记录第1张

 2,URL 中的参数:

形参,或者Request.QueryString["id"] 方式:

ASP.NET MVC5开发记录第2张

获取URL参数的两种方法:

(参考:https://www.cnblogs.com/shiyh/p/8820790.html

1,以方法的形参读取:

通常mvc中默认的url地址书写格式:控制器/方法名/参数

ASP.NET MVC5开发记录第3张

 举个栗子: http://localhost:xxxx/Home/Index/88,其中参数名默认为id,所以在Controller 里面是这样的:

ASP.NET MVC5开发记录第4张

 id可以正确读取到88 的值。但是若形参名为其他,比如 idw,则会报错,不能读到正确值。

另外,这种URL方式,id=88 不能用 Request.QueryString["id"] 这种方式读取。

2,Request.QueryString读取

这种方式读取URL 的参数,URL里的参数必须是 ?id=88 这种形式的

如:http://localhost:xxxx/Home/Index?id=88

这种URL 方式,既可以用 Request.QueryString["id"] 读取,也可以用方法形参读取。

3,总结

URL 方式public ActionResult Index(int id)

Request.QueryString["id"]

http://localhost:xxxx/Home/Index/88可以读取不可以
http://localhost:xxxx/Home/Index?id=88可以读取可以

URL路径问题

(参考:https://blog.csdn.net/only_yu_yy/article/details/78768027

直接设置一个@filepath 路径,在使用时,会附带上控制器和当前视图页面,如:

@filepath 为 file/a.html

控制器和当前视图为 DB/Test

想要的路径结果可能是: http://localhost:53953/file/a.html 但实际路径为:http://localhost:53953/DB/Test/file/a.html

这时,需要对@filepath改成:/file/a.html (前面增加了一个斜杠

引用时,以 @Url.Content(filePath)来取代@filePath 

默认MVC5模板密码强度设置

(来源:https://www.cnblogs.com/jetdl/p/8512595.html)

相关namespace: 

using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;

路径:项目下 App_Start/ IdentityConfig.cs 下方法:ApplicationUserManager Create

var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
// 配置用户名的验证逻辑
 manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
    AllowOnlyAlphanumericUserNames = false,
    RequireUniqueEmail = true
};
// 配置密码的验证逻辑
manager.PasswordValidator = new PasswordValidator
{
    RequiredLength = 6,
    RequireNonLetterOrDigit = true,
    RequireDigit = true,
    RequireLowercase = true,
    RequireUppercase = true,
};

PasswordValidator属性定义

名称描述
RequiredLength指定合法口令的最小长度
RequireNonLetterOrDigit当设置为true时,合法口令必须含有非字母和数字的字符
RequireDigit当设置为true时,合法口令必须含有数字
RequireLowercase当设置为true时,合法口令必须含有小写字母
RequireUppercase当设置为true时,合法口令必须含有大写字母

UserValidator属性定义

名称描述
AllowOnlyAlphanumericUserNames当为true时,用户名只能含有字母数字字符
RequireUniqueEmail当为true时,邮件地址必须唯一

配置验证器后就能在有UserManager的地方使用它UserManager.PasswordValidator.ValidateAsync
通常SignInAsync这些方法内部都会调用他们的.

 

script 和 css 压缩 Bundle

(namespace: System.Web.Optimization)

路径:项目下 App_Start/ BundleConfig.cs 

内容:

//script
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));
//css
bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/site.css"));

使用时:

@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")

 App_Start/ BundleConfig.cs 文件下还要一句:

//开启压缩,测试时该字段一般设置为 false
BundleTable.EnableOptimizations = true;

该句可移至 根目录下 Global.asx.cs 的 Application_Start() 方法里,方便查找修改

免责声明:文章转载自《ASP.NET MVC5开发记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Dockerfile 书写原则分表,分库算法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity事件处理机制与NGUI事件机制

1 Unity原生 1.1 GUI void OnGUI(){ if(GUI.Button(Rect position, string text)){ //点击后立即执行 } 1.1 Input 每个手指触控是通过Input.touches数据结构描述的: fingerId 手指索引 The unique index for a touch. ...

C#中SetWindowPos函数详解

[DllImport("user32.dll")] private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags); SetWindowPos...

Java-多线程第四篇线程池

1、什么是线程池。     线程池在系统启动的时候即创建大量的空闲的线程,程序将一个Runnable对象或者Callable对象传给线程池,线程池就会启动一个线程来执行它们的run()或者call()方法,当run()或者call()方法执行结束后,该线程并不会死亡,而是再次返回线程池称为空闲状态,等待执行下一个Runable对象的run()或者call(...

Ant Design Pro V5 从服务器请求菜单(typescript版)

【前言】 找了很多Admin模板,最后还是看中了AntDesignPro(下文简写antd pro)这个阿里巴巴开源的Admin框架,长这样(还行吧,目前挺主流的): 官网地址:https://pro.ant.design/index-cn 该套模板是使用了React开发框架作为基础,AntDesign(蚂蚁金服开源UI组件库)作为UI库,集成了Dva,...

C# DllImport 方法,出现 The system cannot find the file specified 错误

最近使用 C# 调用 dll 中的 UpdateDriverForPlugAndPlayDevices() 方法去安装驱动,遇到了 “The system cannot find the file specified” 问题, 看着错误提示,是指系统没有找到指定文件,但是我检查硬盘,该文件确实存在,但是因为我测试时使用的是 Hebrew 希伯来语的系统,我...

Word2013对公式处理:样式、自动编号、交叉引用

因快写毕业论文,专门研究了一下Word2013对公式的处理,有一点小心得,记在这里。 文章中公式展示的预期效果是:公式居中,尾端有编号,同时在文章中可以实现引用。实现该效果有很多方法,这里就说一种,其他的方法可以参照其他朋友的博客,都写的很详细。 公式样式设置 为了对公式的统一操作,我们为它建立一个新的样式:在"开始"面版,单机"样式"模块右下方的那个...