这里说的ASP.NET MVC 指的是ASP.NET MVC 1.0版 。入门教程推荐:“从零开始学习ASP.NET MVC 1.0 ”。以下是项目实践中的一点总结:
1、 动态绑定Html.DropDownList
方法:
![ContractedBlock.gif](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
{
IQueryable < Area > areaList = areaRepository.GetAll();
List < SelectListItem > selectListAreas = new List < SelectListItem > ();
foreach (Area item in areaList)
{
selectListAreas.Add( new SelectListItem { Text = item.name,
}
return new SelectList(selectListAreas, " Value " , " Text " );
}
这里的areaRepository.GetAll()是封装了LINQ TO SQL的查询方法,这里只贴出一个相关文章的链接:参考>>(Repository类)、微软轻量级“代码生成器”—Repository Factory使用。
在该页面的Action中这样使用上面的方法:
ViewData["areaSelectList"] = serviceObj.BindUserArea();
将得到的结果赋值给一个ViewData对象以便在页面中使用。
在页面中这样使用这个ViewData对象:
<%=Html.DropDownList("area", ViewData["areaSelectList"] as SelectList)%>
以上是ASP.NET MVC中的动态绑定Html.DropDownList的方法。因为这里的area信息并不是固定不变的。
其实Html.DropDownList最后得到的就是HTML中的select标签及其option标签,因此也可以使用AJAX请求该页面的方法,在该方法中生成对应的HTML,返回给页面,再追加到页面中指定的位置(比如某个DIV中)来实现。这种方法这里不做介绍。
2、 ASP.NET MVC表单提交
比如我要做一个用户查询页面,其中一个条件是用户名,在ASP.NET MVC中我怎么才能将该条件传给该页面对应的Action,并将结果在页面中显示?见如下代码:
ListUser页面代码:
![ContractedBlock.gif](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
Inherits = " System.Web.Mvc.ViewPage<IPagedList<User>> " %>
<% @ Import Namespace = " MyProject.Models " %>
<% @ Import Namespace = " MvcPaging " %>
< asp:Content ID ="Content1" ContentPlaceHolderID ="TitleContent" runat ="server" >
ListUser
</ asp:Content >
< asp:Content ID ="Content2" ContentPlaceHolderID ="MainContent" runat ="server" >
< div class ="formDiv" >
<% using (Html.BeginForm( " ListUser " , " Admin " , FormMethod.Post)) %>
<% { %>
< div style ="height: 45; margin-bottom: 5px;" >
< div style ="float: left; padding-top: 5px; padding-left: 40px; color: #D1D1D1; width: 300px;" >
姓名: <% = Html.TextBox( " username " , ViewData[ " username " ]) %>
</ div >
< div style ="float: left; padding-left: 40px;" >
<% = Html.TextBox( " submitBtn " , "" , new { type = " image " , src ;background-color: #f5f5f5; color: #000000;">= " http://www.cnblogs.com/Content/Image/search.jpg " }) %>
</ div >
</ div >
<% } %>
< div style ="padding-left: 40px;" >
< table class ="isTable" style ="width: 900px; padding-left: 0px;" >
< tr >
< th >
编号
</ th >
< th >
用户名
</ th >
< th >
邮箱
</ th >
< th >
地区
</ th >
</ tr >
<% foreach (var item in Model)
{ %>
< tr >
< td >
<% = Html.Encode(item.userid) %>
</ td >
< td >
<% = Html.Encode(item.username) %>
</ td >
< td >
<% = Html.Encode(item.email) %>
</ td >
< td >
<% = Html.Encode(item.area) %>
</ td >
</ tr >
<% } %>
</ table >
< div class ="pager" >
<% = Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new {
username = ViewData[ " username " ]}) %>
</ div >
</ div >
</ div >
</ asp:Content >
Html.BeginForm("ListUser", "admin",FormMethod.Post)最终对应的HTML是<form action="/admin/ListUser" method="post">,这个和Html.DropDownList方法一样,是ASP.NET MVC中特有的方法,其实这里我们完全可以使用对应的HTML标签。
ListUser页面的Action:
![ContractedBlock.gif](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
{
int pageValue = page.HasValue ? page.Value : 1 ;
string username = form[ " username " ];
ViewData[ " username " ] = username;
IQueryable < User > users = serviceObj.SelectUser(username);
ViewData.Model = users.ToPagedList(pageValue, 10 ); // 数据传给页面
return View( " ListUser " );
}
这里除了定义一个FormCollection对象作为参数,还可以直接定义对应的string参数。比如,这里就可以直接定义参数username,那么在submit之后,username的值就是在页面输入的查询关键字。
SelectUser方法如下:代码
{
username = username ?? "" ;
IQueryable < User > users = userRepository.GetAll().Where(u =>
return users;
}
页面顶部代码中Inherits属性指定的是页面接收的数据类型,IpagedList是MvcPaging中的方法,这里不作介绍,给个相关文章的链接:参考>>(ASP.NET MVC 分页)。更多总结会陆续更新上来。