1、设置模型,引入构造函数,初始化集合

public class Person
{
public Person() //引入构造函数,初始化集合.如果未设置构造函数,集合会出现错误。
{
Skills = new HashSet<string>();
BirthDate = DateTime.Now.AddDays(-20);
}

public int PersonId { get; set; }

[Required]
public string FirstName { get; set; }

[Required]
public string LastName { get; set; }

[Required]
public DateTime BirthDate { get; set; }

[Required]
[UIHint("BooleanButtonLabel")] //给指定字段指定显示模板。用于html模板辅助方法,比如html.DisplayForModel
public bool LikesMusic { get; set; }

[Required]
[EmailAddress]
public string EmailAddress { get; set; }

public ICollection<string> Skills { get; set; }
}

2、设置控制器方法

public ActionResult Create()
{
var person = new Person();
return View(person);
}

[HttpPost]
public ActionResult Create(Person person)
{
if (ModelState.IsValid)
{
_people.Add(person);
return RedirectToAction("Index");
}

return View(person);

}

3、使用基架生成强类型视图

@model BootstrapMVC30Days.Models.Person

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">

<div class="form-group">
@Html.LabelFor(model => model.LikesMusic, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.LikesMusic)
@Html.ValidationMessageFor(model => model.LikesMusic, "", new { @class = "text-danger" })
</div>
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Skills, htmlAttributes: new { @class ="control-label col-md-2"})
<div class="col-md-10">
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-default" id="add-skill" type="button">
<span class="glyphicon glyphicon-plus"></span>
</button>
</span>
<input type="text" id="skill" class="form-control" placeholder="输入然后点击 + 加入" />

</div>
</div>
</div>

<div id="skills-wrapper"></div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<ul id="skills-list" class="list-group"></ul>
</div>
</div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>

4、在页面底部引入脚本   。虽然我们加入了多个同名(name相同)的隐藏表单,但模型绑定会将它作为集合来处理。

@section Scripts {
<script>
$(function () {
$("#add-skill").click(function () {
//取得文本框的值
var skill = $("#skill").val();

//加入隐藏输入到表单
$("#skills-wrapper").append($("<input type='hidden' name ='Skills' value='" + skill + "' />"));

//加入输入到列表框用于显示
$("#skills-list").append($("<li class='list-group-item'> " + skill + "</li>"));

//重置表单,文本框获得焦点
$("#skill").val("").focus;
});

});
</script>
@Scripts.Render("~/bundles/jqueryval")
}

最新文章

  1. 前端小知识点---html换行被解析为空格的相关知识
  2. Hibernate学习笔记3
  3. codeforces 83 D. Numbers
  4. 执行动态sql返回参数
  5. PHP命名空间概念解析
  6. hibernate的id生成策略
  7. SQL SERVER 2008查询其他数据库
  8. 深度优先搜索算法(DFS)以及leetCode的subsets II
  9. LxNx前端F2F面试问题整理
  10. [LeetCode] Find Duplicate Subtrees 寻找重复树
  11. Kali 2.0使用SSH进行远程登录
  12. liunx驱动----USB驱动
  13. 谈谈web上各种图片应用的优缺点
  14. 构建最小JDK Docker镜像
  15. 应用通信-方案一:RestTemplate
  16. Webrtc源码走读(一)
  17. response和request的setCharacterEncoding区别
  18. linux下更换pip源
  19. Union Find
  20. C#连接SQL server数据库

热门文章

  1. android GET 请求在5.0版本的取不到数据,报IO异常兼容问题解决
  2. 实体类与实体DTO类之间的转换
  3. 【CF766D】Mahmoud and a Dictionary(并查集)
  4. Java模拟斗地主(实现大小排序)
  5. sublime text 3注册码
  6. 使用mysql-connector-java.jar连接MySql时出现:Error while retrieving metadata for procedure columns: java.sql.SQLException: Parameter/Column name pattern can not be NULL or empty.
  7. curl 发送json请求
  8. Codefoces 436 B. Om Nom and Spiders
  9. 链接脚本在编程中的高级运用之二——执行时库和C++特性支持
  10. iOS 用xib自定义View