现在的位置: 主页 > 企业简介 > 文章列表

[Asp.net MVC]Asp.net MVC5系列——添加数据

作者:北京东方雨泽科技有限公司 来源:www.dfyz6789.com 发布时间:2017-09-09 10:26:51
 

[Asp.net MVC]Asp.net MVC5系列——添加数据 上篇文章介绍了如何通过控制器访问模型中的数据,在本节中我们将要在数据库中追加并保存一些数据。我们将要创建一个表单以及一些表单输入控件,用来输入数据信息。当用户提交表单时将把这些用户输入的信息保存在数据库中。我们可以通过在浏览器中输入“http://localhost:xx/Student/Create”这个URL地址来访问这个表单。

显示添加数据时所用表单

首先,我们需要在我们的StudentController类中追加一个Create方法,该方法返回一个视图,该视图中包含了用户输入信息时所要用到的表单。

1 public ActionResult Create()

2 {

3 return View();

4 }

现在让我们来实现这个Create方法中所要返回的视图,我们将在这个视图中向用户显示追加数据时所需要用到的表单。在Create方法中点击鼠标右键,并点击上下文菜单中的“添加视图”。

在“添加视图”对话框中将模型类指定为“Student”,在支架模板中选择Create,如图所示。

点击添加按钮,Views文件夹下的Student文件夹中将会自动添加一个名为“Create.cshtml”的视图模板文件。因为你在支架模板中选择了“Create”,所以支架模板会在该视图模板文件中自动生成一些默认代码。打开该文件进行查看,在该文件中已经自动创建了一个HTML表单,以及一段用来显示校验时错误信息的文字。Visual Web Developer检查Student类,并自动创建与该类中每个属性相对应的<label>元素以及<input>元素。支架模板自动生成的创建数据所用视图中的代码。

复制代码

1 @model Wolfy.FirstMVCProject.Models.Student

2

3 @{

4 Layout = null;

5 }

6

7 <!DOCTYPE html>

8

9 <html>

10 <head>

11 <meta name="viewport" content="width=device-width" />

12 <title>Create</title>

13 </head>

14 <body>

15 @using (Html.BeginForm())

16 {

17 @Html.AntiForgeryToken()

18

19 <div class="form-horizontal">

20 <h4>Student</h4>

21 <hr />

22 @Html.ValidationSummary(true)

23

24 <div class="form-group">

25 @Html.LabelFor(model => model.stuName, new { @class = "control-label col-md-2" })

26 <div class="col-md-10">

27 @Html.EditorFor(model => model.stuName)

28 @Html.ValidationMessageFor(model => model.stuName)

29 </div>

30 </div>

31

32 <div class="form-group">

33 @Html.LabelFor(model => model.stuSex, new { @class = "control-label col-md-2" })

34 <div class="col-md-10">

35 @Html.EditorFor(model => model.stuSex)

36 @Html.ValidationMessageFor(model => model.stuSex)

37 </div>

38 </div>

39

40 <div class="form-group">

41 @Html.LabelFor(model => model.stuBirthdate, new { @class = "control-label col-md-2" })

42 <div class="col-md-10">

43 @Html.EditorFor(model => model.stuBirthdate)

44 @Html.ValidationMessageFor(model => model.stuBirthdate)

45 </div>

46 </div>

47

48 <div class="form-group">

49 @Html.LabelFor(model => model.stuStudydate, new { @class = "control-label col-md-2" })

50 <div class="col-md-10">

51 @Html.EditorFor(model => model.stuStudydate)

52 @Html.ValidationMessageFor(model => model.stuStudydate)

53 </div>

54 </div>

55

56 <div class="form-group">

57 @Html.LabelFor(model => model.stuAddress, new { @class = "control-label col-md-2" })

58 <div class="col-md-10">

59 @Html.EditorFor(model => model.stuAddress)

60 @Html.ValidationMessageFor(model => model.stuAddress)

61 </div>

62 </div>

63

64 <div class="form-group">

65 @Html.LabelFor(model => model.stuEmail, new { @class = "control-label col-md-2" })

66 <div class="col-md-10">

67 @Html.EditorFor(model => model.stuEmail)

68 @Html.ValidationMessageFor(model => model.stuEmail)

69 </div>

70 </div>

71

72 <div class="form-group">

73 @Html.LabelFor(model => model.stuPhone, new { @class = "control-label col-md-2" })

74 <div class="col-md-10">

75 @Html.EditorFor(model => model.stuPhone)

76 @Html.ValidationMessageFor(model => model.stuPhone)

77 </div>

78 </div>

79

80 <div class="form-group">

81 @Html.LabelFor(model => model.stuIsDel, new { @class = "control-label col-md-2" })

82 <div class="col-md-10">

83 @Html.EditorFor(model => model.stuIsDel)

84 @Html.ValidationMessageFor(model => model.stuIsDel)

85 </div>

86 </div>

87

88 <div class="form-group">

89 @Html.LabelFor(model => model.stuInputtime, new { @class = "control-label col-md-2" })

90 <div class="col-md-10">

91 @Html.EditorFor(model => model.stuInputtime)

92 @Html.ValidationMessageFor(model => model.stuInputtime)

93 </div>

94 </div>

95

96 <div class="form-group">

97 @Html.LabelFor(model => model.Course.classId, "stuClass", new { @class = "control-label col-md-2" })

98 <div class="col-md-10">

99 @Html.DropDownList("class", String.Empty)

100 @Html.ValidationMessageFor(model => model.classId)

101 </div>

102 </div>

103

104 <div class="form-group">

105 <div class="col-md-offset-2 col-md-10">

106 <input type="submit" value="Create" class="btn btn-default" />

107 </div>

108 </div>

109 </div>

110 }

111

112 <div>

113 @Html.ActionLink("Back to List", "Index")

114 </div>

115 </body>

116 </html>

复制代码

这段代码中使用了几个HTML辅助类的方法来帮助简化HTML标签的书写方法。

Html.LabelFor辅助器用于显示字段名(”Title”,”ReleaseDate”,”Genre”或者”Price”)。

Html.EditorFor辅助器用于显示一个提供给用户输入信息的HTML的<input>元素。

Html.ValidationMessageFor辅助器用于显示一个针对属性的校验信息。

请注意我们的视图模板的顶部有一个“@model Wolfy.FirstMVCProject.Models.Student”的声明,该声明将我们的视图模板中的“模型”强类型化成一个Student类。

然后我们右键在浏览器中查看Create.cshtml。

为什么会出现这个错误,因为学生表中存在班级id这个外键,在绑定下拉列表的时候没有指定数据源。从该错误信息,我们将学习ViewData的基本用法。

获取或设置一个字典,站群,其中包含在控制器和视图之间传递的数据。

控制器可以向视图数据添加键/值对。 然后,这些数据将在呈现视图时传递给视图。 视图可以添加或更改数据,当视图作为请求的一部分发布时,这些数据将发送到控制器。

说的有点拗口,可以通过键值对的形式为ViewData赋值,然后在视图中可以使用ViewData.

那么我们修改上面的bug,作为实例代码:

复制代码

1 public ActionResult Create()

2 {

3 var courses = from s in entity.Course

4 select s;

5 List<SelectListItem> items = new List<SelectListItem>();

6 foreach (var item in courses)

7 {

8 SelectListItem selectListItem = new SelectListItem() { Text = item.className, Value = item.classId.ToString() };

9 items.Add(selectListItem);

10 }

11 ViewData["class"] = items;

12 return View();

13 }

复制代码

而下面的代码中的“class”为ViewData的键,下拉框根据键值取对应的值(简单了解,后面将详细讲解ViewData,ViewBag)。

@Html.DropDownList("class", String.Empty)

有兴趣的可以看看DropDownList代码:

View Code

修改后浏览

在页面上右键,查看源代码,感兴趣的朋友可以看看生成的html代码,也许从中会发现点什么!

1

2

3 <!DOCTYPE html>

4

5 <html>

6 <head>

7 <meta name="viewport" content="width=device-width" />

8 <title>Create</title>

9 </head>

10 <body>

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:孝感SEO http://xiaogan.4567w.com

  • 上一篇:DNS如何对SEO产生影响
  • 下一篇:最后一页
  •