ASP.NET MVC 2入门演练 3 - 列表和添加功能
一、列表显示-View:List.aspx
此功能实现起来比较简单,之前我们在Site.Master添加了如下一行代码:
其中"List"就是指定Action,最后面的"News“指定的是Controller,所以,只需要在NewsController中实现List方法即可。以下代码是NewsController类中的List方法。
public ActionResult List()
{
return View(db.CMSNews.OrderByDescending(Model => Model.ID).ToList());
}
db是在类NewsController中声明的成员:
MVCDemoEntities哪里来的呢,查看以下Web.config中的链接字符串:
到此列表显示功能完成,我这里没有更改View中的代码,您可以根据需要去更改,比如把表格改成div,删除一些不想再列表中显示的列等。
另外,自动生成的代码我都没改,实际上,像<%: Html.ActionLink("Edit", "Edit", new { id=item.ID }) %>ActionLink中的参数可以自定义的。
二、实现添加功能 - View:Create.aspx
1)View中我把自动生成的验证代码去掉,使用了JQuery的表单验证功能,另外<form>也去掉自动生成的代码而改为下面的代码:
<form id="frmCreate" action="<%=Url.Action("Create","News")%>" method="post">
代码如下:
<script src="http://www.cnblogs.com/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="http://www.cnblogs.com/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<!--JQuery表单验证脚本-->
<script type="text/javascript">
$(document).ready(
function () {
$("#frmCreate").validate({
rules: {
NewsTitle: { required: true },
NewsCategory: { required: true },
NewsContent: { required: true },
PubDate: { required: true,
date: true
}
},
messages: {
NewsTitle: '此项不能为空',
NewsCategory: '此项不能为空',
NewsContent: '此项不能为空',
PubDate: {
required: '此项不能为空',
date: '日期格式错误'
}
},
success: function (label) {
label.addClass("valid").text("√")
}
//submitHandler: function () { alert("操作已完成!") }
}
)
}
)
</script>
NewsController中Create方法实现代码:
// POST: /News/Create
[HttpPost]
public ActionResult Create(FormCollection collection)
{
try
{
// TODO: Add insert logic here
CMSNews news = new CMSNews();
news.NewsTitle = collection["NewsTitle"];
news.NewsCategory = collection["NewsCategory"];
news.NewsContent = collection["NewsContent"];
news.PubDate = DateTime.Parse(collection["PubDate"]);
db.AddToCMSNews(news);
db.SaveChanges();
return RedirectToAction("List");
}
catch
{
return View();
}
}
运行后界面,输入错误时:
输入正确时:
表单中的HTML代码:
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.NewsTitle) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.NewsTitle)%>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.NewsCategory) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(model => model.NewsCategory,
new SelectList(new MVC2Demo.Models.MVCDemoEntities().CMSNewsCategory.ToList(),
"CategoryCode","CategoryName"),"-- Select Category --")%>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.NewsContent) %>
</div>
<div class="editor-field">
<%: Html.TextAreaFor(model => model.NewsContent, new { Style = "width:200px;height:100px" })%>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.PubDate) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.PubDate) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
CMSNewsCategory是新闻分类表只有两列:编码和名称,编码是主键,只需要Update一下Model,选中此表即可:
双击MVCDemoModel.edmx,在Model Browser中右击EntityContainer:MVCDemoEntities,右键菜单选择【Update Model From Database】,在出现的窗口中展开表并选中CMSNewsCategory,然后【Finish】。
下一篇中,实现浏览、修改和删除功能。