前言:

在本篇 Taurus.MVC WebMVC 入门开发教程的第五篇文章中,我们将学习如何处理表单提交和进行数据验证。

这是 Web 开发中非常重要的一部分,因为它涉及到用户输入数据的处理和有效性验证。

我们将继续使用 Taurus.Mvc 命名空间,并探讨如何在控制器中接收表单数据、进行数据验证并给出相应的响应。

步骤1:创建视图

首先,我们需要创建一个包含表单的视图。

在视图文件(例如 create.html)中,我们可以使用 HTML 表单元素来接收用户输入的数据。

<!DOCTYPE html>
<html>
<head>
<title>创建用户</title>
</head>
<body>
<h1>创建用户</h1>
<form method="post">
<label for="name">姓名:</label>
<input type="text" name="name" id="name" required>
<br>
<label for="age">年龄:</label>
<input type="number" name="age" id="age" required>
<br>
<input type="submit" value="提交" name="btnAddUser">
<div id="printMsg"></div>
</form>
</body>
</html>

在上述代码中,我们创建了一个简单的表单,包含一个文本输入框和一个数字输入框,用于接收用户的姓名和年龄。

表单的 method 属性被设置为 post,默认将数据提交到当前页面。

同时给按钮起了个名称"btnAddUser",事件按钮,对应控制器的方法。

步骤2:更新控制器

接下来,我们需要在控制器中创建一个方法来处理表单提交。

我们继续沿用上文使用到的 HomeController.cs 文件,并在其中添加一个名为 Create 的方法,用来呈现显示页面内容。

同时添加 BtnAddUser 方法【和按钮同名,不区分大小写】来处理按钮事件。

public class HomeController : Taurus.Mvc.Controller
{
public void Index()
{
...
} public void Create() { } public void BtnAddUser(string name, int age)
{
View.Set("printMsg", name + " - " + age);
}
}

在 HomeController 类中,定义和 Create.html 同名的方法,用来显示该表单界面。

同时添加 BtnAddUser 方法,来处理按钮点击事件。

上述代码中的 BtnAddUser 方法可以指定接收 表单 对象作为参数,其中包含了表单提交的数据。

我们也可以通过 Query<string>("name") 和 Query<int>("age") 来获取相应的用户输入值。

上述示例代码中,最后通过:View.Set 方法,可以将数据呈现在指定(ID=“printMsg”)的 Html 标签中。

步骤3:进行数据验证

在表单提交后,我们通常需要对用户输入的数据进行验证,以确保其有效性。

在上述代码的中,我们将参数表单的接收参数,定义到方法参数中,同时指定了数据类型。

对于表单参数较少时:

将表单参数放到方法参数中,可以简化代码,同时利用框架的的数据类型转换,进行有效转换。

对于参数较多时:

您可以通过定义实体Model,并将它定义到方法参数中,例如:

    public void BtnAddUser(User user)
{
View.Set("printMsg", user.name + " - " + user.age);
}

当然我们也可以不定义任何方法参数,通过 Query<T>(Name) 方法来获取相应的用户输入值。

    public void BtnAddUser()
{
View.Set("printMsg", Query<String>("name") + " - " + Query<int>("age"));
}

接下来,您需要自行添加数据验证的逻辑,以保证程序的稳定输出。

例如,您可以使用条件语句、正则表达式或其他验证方式来检查用户输入的数据是否符合要求。

如果数据验证失败,您可以返回一个视图,向用户显示错误信息并要求重新输入。

如果数据验证成功,您可以执行其他操作(例如保存到数据库)并重定向用户到另一个页面。

步骤4:运行应用程序

最后,运行应用程序并访问 /Home/Create 路由,您将看到一个表单页面。

尝试提交表单并查看控制台输出,您将看到用户输入的姓名和年龄被成功获取。

总结

通过本篇教程,我们学习了如何在 Taurus.MVC WebMVC 中处理表单提交和进行数据验证。

我们创建了一个包含表单的视图,并在控制器中接收表单数据,并进行数据验证和其他逻辑操作。

本系列的目录大纲为:

Taurus.MVC WebMVC 入门开发教程1:框架下载环境配置与运行

Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现

Taurus.MVC WebMVC 入门开发教程3:数据绑定Model

Taurus.MVC WebMVC 入门开发教程4:数据列表绑定List<Model>

Taurus.MVC WebMVC 入门开发教程5:表单提交与数据验证

Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射

Taurus.MVC WebMVC 入门开发教程7:部分视图和页面片段

Taurus.MVC WebMVC 入门开发教程5:表单提交与数据验证的更多相关文章

  1. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  2. Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  3. Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  4. Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  5. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  6. Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  7. Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  8. EasyUI中在表单提交之前进行验证

    使用EasyUi我们可以在客户端表单提交之前进行验证,过程如下:只需在onSubmit的时候使用return  $("#form1").form('validate')方法即可,E ...

  9. AngularJS 表单提交后显示验证信息与失焦后显示验证信息

    虽然说AngularJS的实时表单验证非常有用,非常高效方便,但是当用户还没有完成输入时便弹出一个错误提示,这种体验是非常糟糕的. 正常的表单验证逻辑应该是在用户提交表单后或完成当前字段中的输入后,再 ...

  10. Form表单提交,js验证

    Form表单提交,js验证 1,  Onclick() 2, Onsubmit() Button标签 input (属性 submit  button )标签 Input type=button    ...

随机推荐

  1. uni-app 计算属性 computed

    功能:=>大于1000用kg表示 小于1000,用g表示 计算属性 计算属性必须是有一个返回值的哦 在html写被计算的值 在computed中去直接调用哈 <view> <t ...

  2. 从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA

    从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取.基于ES的简单语义搜索.基于 REfO 的简单KBQA 个人入门知识图谱过程中的学习笔记,算是半教程类的,指引初学者对 ...

  3. 【三】分布式训练---单机多卡与多机多卡组网(飞桨paddle2.0+)更加推荐spawn方式!

    1. 单机多卡启动并行训练 飞桨2.0增加paddle.distributed.spawn函数来启动单机多卡训练,同时原有的paddle.distributed.launch的方式依然保留. padd ...

  4. MySQL使用遇到问题总结

    1.mysql安装好后在控制台输入命令后无反应 这是就要注意: show databases; 第一:databases是要加"s"结尾 第二:如果加了s仍无反应,看是否加了&qu ...

  5. Flask Paginate实现表格分页

    flask_paginate 是 Flask 框架的一个分页扩展,用于处理分页相关的功能.它可以帮助你在 Flask Web 应用程序中实现分页功能,让用户可以浏览大量数据的不同部分.本篇博文重点讲述 ...

  6. 2.1 C/C++ 使用数组与指针

    C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...

  7. C/C++ 实现切片免杀的思路

    今天突然想到了一个好玩的免杀思路,原理就是想办法切断磁盘特征与内存特征,关于沙盒免杀我寻思着,这样可以将不同的的DLL映射到内存,在内存中他们的特征也是被切断的,在注入器上做判断如果是沙盒则不加载,不 ...

  8. 驱动开发:WinDBG 枚举SSDT以及SSSDT地址

    在前面的博文<驱动开发:内核读取SSDT表基址>中已经教大家如何寻找SSDT表基地址了,今天给大家分享两个适用于WinDBG调试器上的脚本文件,该脚本文件可以很好的枚举出当前系统内的SSD ...

  9. Yarp 与 Nginx性能大比拼不出所料它胜利了!

    Yarp 与 Nginx 性能大比拼 测试环境: Ubuntu 22.04.3 LTS (GNU/Linux 6.5.0-14-generic x86_64) Intel(R) Xeon(R) CPU ...

  10. NC15976 小C的周末

    题目链接 题目 题目描述 愉快的周末到了,小C和他的N-1个朋友买了M个游戏,游戏编号从1~M.每个游戏都是多人游戏,他们打算周末一起打游戏. 小C的每个朋友都决定好了要玩哪一款游戏(会有一组人打同一 ...