一、隐式从ViewBag取数据

1、action中的代码:

 ViewBag.UserName = "admin";

cshtml中的代码:

 @Html.TextBox("UserName")

这样就会在@Html.TextBox("UserName")所在的位置显示admin了

2、action中的代码:

 Book[] books = new Book[]
{
new Book{Id=,Name="如鹏网"},
new Book{Id=,Name="腾讯"},
new Book{Id=,Name="天猫"}
} SelectList slBooks = new SelectList(books,"Id","Name",);
ViewBag.books = slBooks;

cshtml中的代码:

@Html.DropDownList("books")

这样就会在@Html.DropDownList("books")的位置替换显示为下拉列表了。

二、强类型视图绑定

Action:

 public ActionResult Index()
{
return View();
}

Model:

 public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
}

cshtml:

@model 强类型视图绑定.Models.UserModel
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Html.Label("Id"):@Html.TextBoxFor(m => m.Id)<br />
@Html.Label("Name"):@Html.TextBoxFor(m => m.Name)<br />
</div>
</body>
</html>

三、数据客户端验证

建一个MVC模板的MVC项目。

Model

 public class UserModel
{
[DisplayName("用户名")]
[Required]
[StringLength()]
public string UserName { get; set; } [DisplayName("密码")]
[Required]
[StringLength()]
public string Password { get; set; }
}

Controller

 public ActionResult Login(UserModel model)
{
if (!ModelState.IsValid)
{
return View(nameof(Index));//转到Index.cshtml页面
}
return Content(model.UserName);
}

cshtml:

 @model 客户端数据验证.Models.UserModel
@{
ViewBag.Title = "Home Page";
} @using (Html.BeginForm("Login", "Home"))
{
@Html.LabelFor(m => m.UserName, "用户名") @Html.TextBoxFor(m => m.UserName) @Html.ValidationMessageFor(m => m.UserName)<br />
@Html.LabelFor(m => m.Password, "密码") @Html.TextBoxFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password)<br />
<input type="submit" value="提交" />
}

然后在Layout.cshtml中的head头部引入

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

完成以上步骤后,客户端提交表单之前就可以验证了。

HtmlHelper2的更多相关文章

  1. Asp.net MVC 简单分页 自做简单分页

    Asp.net MVC 简单分页:   public static string Pager(int page,int pageSize,int total)         {           ...

随机推荐

  1. Windows 子网掩码

    子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码.子网掩码不能单独存在,它必须结合IP地 ...

  2. Jmeter-BeanShell断言:将数据库结果封装成list作为参数

    import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjso ...

  3. Sonatype Nexus Repository Manager清除无用的docker镜像

    1.创建定时任务 2.先run一下看是否能删除无用镜像

  4. 基于V8引擎的C++和JS的相互交互

    基于什么原因略! 1. 脚本引擎的基本功能 V8只是一个JS引擎.去除它的特点功能出处,它必须要实现JS引擎的几个基础功能: 脚本执行:脚本可能是一个表达式:一段js代码:或者一个文件执行表达式返回j ...

  5. CF377D Developing Game

    题目链接: luogu 题目分析: 把每个人当成一个三元组\([l_i, r_i, v_i]\) 考虑每个人对哪个能力区间\([L, R]\)有贡献 应该是左端点在\([l_i, v_i]\),右端点 ...

  6. chattr和lsattr命令,不能被删除、改名、设定链接关系,同时不能写入或新增内容

    chattr和lsattr命令详解 chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现.同样-D检查压缩文件中的错误的功能, ...

  7. Docker系列(五):Docker网络机制(上)

    Linux路由机制打通网络 路由机制是效率最好的 docker128上修改Docker0的网络地址,与docker130不冲突 vi /usr/lib/systemd/system/docker.se ...

  8. Pycharm中如何加载多个项目同时存在

    原文地址: http://www.cnblogs.com/mrgavin/p/6382406.html 今天在使用Pycharm工具练习Python时遇到一个疑问:在已存有项目A工程的前提下如何新建另 ...

  9. 第四周——重新clone项目后maven问题

    重新clone项目后,一直报错,"类重复..." clean后install也无效果. 原因是idea在重启项目时会更改maven为默认的idea自带的maven配置,要重新设置

  10. Traveling by Stagecoach /// 状压DP oj22914

    题目大意: 输入n,m,p,a,b n是车票数(1<=n<=8),m是城市数(2<=m<=30) p是路径数(可能为0),a是起点,b是终点 接下来一行有n个数 为每张车票的马 ...