|
4.编写New视图,在这里我们将提供一些表单,供用户输入数据,编写HTML代码如下:
<h2>New Post</h2>
<hr />
<div class="postitem">
Title:<input id="title" name="title" type="text" /><br /><br />
Author:<input id="author" name="author" type="text" /><br /><br />
Content:<textarea id="description" name="description" cols="40" rows="5"></textarea><br /><br />
<input type="submit" value="Save" />
</div>
接下来添加一个HTML的form元素,并指定它的action为我们要增加新的Post的action,这里假定为Add,并且指定method为Post,最终我们完成的代码应该看起来如下所示:
<h2>New Post</h2>
<hr />
<div class="postitem">
<form action="Add" method="post">
Title:<input id="title" name="title" type="text" /><br /><br />
Author:<input id="author" name="author" type="text" /><br /><br />
Content:<textarea id="description" name="description" cols="40" rows="5"></textarea><br /><br />
<input type="submit" value="Save" />
</form>
</div>获取表单数据
完成了上面的步骤之后,就可以编写控制器中Add action的代码,在这里需要获取表单的数据,并将其写入到数据库,ASP.NET MVC Framework中提供了多种方法获取表单数据。
1.自动映射
使用这种方法,我们只需要把方法的参数定义表单的名称,ASP.net MVC Framework将会自动帮助我们进行映射,直接把表单的数据赋值给form的Action所对应的方法参数上,
如下代码所示:
[ControllerAction]
public void Add(string title, string author, string description)
{
Post post = new Post();
post.Title = title;
post.Author = author;
post.Description = description;
post.PubDate = DateTime.Now;
BlogRepository repository = new BlogRepository();
repository.Add(post);
RedirectToAction("Index");
}
2.第一种方法在使用时,如果界面上表单过多,会使方法的参数变大,这样好像就变成了重构中所说的“脏代码”,为了解决这个问题,我们还可以使用窗体变量来获取表单
的值,使其代码看起来如下所示:
[ControllerAction]
public void Add()
{
Post post = new Post();
post.Title = Request.Form["title"];
post.Author = Request.Form["author"];
post.Description = Request.Form["description"];
post.PubDate = DateTime.Now;
BlogRepository repository = new BlogRepository();
repository.Add(post);
RedirectToAction("Index");
}
(责任编辑:admin) |