上一节我们学习了MVC的概念及开发环境,也通过一个小例子实践了MVC的控制器Controller通过ViewData向视图View传递数据的功能,相信大家对NetCore MVC有个基本的认识了,这一节我们将介绍MVC视图的表单向控制器Controller输入提交数据。表单元素还记得我们在介绍HTML的时候,介绍了的HTML表单元素吗?对就是那个form,现在我们再次复习加深一下影响,因为这个比较重要可以说任何一个web应用,无论何种语言开发的,都离不开表单,因为这个与开发语言和框架无关。
表单元素应该有两个属性。
method(post)和action(Controller/action)
输入元素应该有两个属性id(在视图中使用CSS或JavaScript)和name(用于控制器获取输入)。
id和name可以相同。
id必须唯一,name不需要
应该有一个Submit按钮,这样表单输入就可以提交到表单的action属性中指定的controller/action 进行处理
打开百度APP看高清图片
action指定Controller(Form)和Action (Action_Post)处理post请求
使用HttpContext.Request从表单读取输入值,这里使用输入元素的name属性(不是id)来获取值
示例
我们先按照前一节介绍的添加视图的步骤,在Views/Home文件夹下面建立一个名为Hello的视图文件,并编写如下代码
然后在Home控制器里面建立两个Action一个名为Hello和一个名为Hello_Post(用来处理From表单提交信息,本Action的命名一定要和from表单指定的action一致)
Hello Action
publicIActionResultHello(){DoGreeting();//调用问好方法//返回默认视图return View();}
Hello_Post Action
public IActionResult Hello_Post(){DoGreeting();//用Request.Form 获取表单输入信息,对应的键就是表单各输入元素的name属性值string name = Request.Form["name"];string gender = Request.Form["gender"];string membership = Request.Form["membership"];string smoke = Request.Form["smoke"];//调用验证方法验证表单输入数据不为空if (CheckIfEmpty(name, gender, membership, smoke)){//如果有没有输入的信息,给出提示信息ViewData["Message"] = "表单的所有信息必须填写!";}else{//信息验证通过则处理表单信息ViewData["Message"] = $"欢迎,{name}({gender},{membership})!";//判断是否吸烟if (string.Equals(smoke, "Smoking")){//如果吸烟,则给出提示信息,并把信息拼接到ViewData["Message"]ViewData["Message"] += "请在指定的吸烟区域内吸烟。";}}//返回return View("Hello");}
我们还需要在Home控制器建立两个普通方法来统一处理,欢迎信息及验证表单输入信息是否合法,然后在Action需要的地方进行调用
此时代码编写完毕,按照前一节介绍的运行方法进行运行
表单信息提交前
#表单#
表单提交后
MVC表单输入信息处理,我们就简单介绍到这里,当然在实际项目开发中没有这么简单,但是大体流程都一样,复杂的是视图样式,信息的多样化,及Action的验证及逻辑处理,还有对输入信息的持久化,比如把信息存入数据库。大家可以根据自己的想法进行各种尝试。下一节我们将对C#进一步的学习