HtmlHelper2
一、隐式从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的更多相关文章
- Asp.net MVC 简单分页 自做简单分页
Asp.net MVC 简单分页: public static string Pager(int page,int pageSize,int total) { ...
随机推荐
- SQLserver执行命令
方法一:xp_cmdshell exec master..xp_cmdshell "whoami"默认执行是关闭 EXEC sp_configure 'show advanced ...
- VBA当中的时间日期函数
目前还没发现VBA中有直接的函数能够将完整的年月日时分秒的文本格式日期转换成日期型日期的,那只能使用间接实现的办法.用dateserial + timeserial的方法.因为dateserial和t ...
- win10安装mysql__艰难的心路历程
俺是新系统,嘿嘿嘿 首先,把下载好的压缩包解压到安装目录中,哪个盘可以. 第二,先创建my.ini文件,不然待会忘了.在文件中添加以下内容: [mysqld] port = basedir=C:\Wi ...
- js拼接HTML onclick传参,,页面转义符
字符串 1 使用" .比如: ("'+key+'")例: htmlStr = htmlStr + '<span><img src="'+src ...
- [转]Ubuntu安装rabbitMq
笔者ubuntu版本为Ubuntu 15.10,查看ubuntu当前版本命令:cat /etc/issue. 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erla ...
- CSS压缩
通过W3C 统一验证工具的检测没有错误后,为了提高加载速度和节约空间(相对来说,css量很少的情况下,几乎没啥区别),可以通过css压缩工具把css进行压缩. w3c css压缩 http://too ...
- Divide by Zero 2018 and Codeforces Round #474 (Div. 1 + Div. 2, combined)G - Bandit Blues
题意:求满足条件的排列,1:从左往右会遇到a个比当前数大的数,(每次遇到更大的数会更换当前数)2.从右往左会遇到b个比当前数大的数. 题解:1-n的排列,n肯定是从左往右和从右往左的最后一个数. 考虑 ...
- (转)Android 升级 ADT 之后报错之一 case语句 .
转:http://blog.csdn.net/wchinaw/article/details/7325641 下面文章大意是指:在一般的Android项目中,R类的常量都是用final定义的,但ADT ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
报错: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected estab ...
- Vue项目组织规范
目录 一.项目结构的核心思想 二.项目目录结构 三.资源路径编译规则 四.index.html 五.build目录 和 config目录 六.public目录 七.static 目录 八.src目录结 ...