ASP.NET MVC 使用总结(一)

     这里说的ASP.NET MVC 指的是ASP.NET MVC 1.0版 。入门教程推荐:“从零开始学习ASP.NET MVC 1.0 ”。以下是项目实践中的一点总结:

1、 动态绑定Html.DropDownList
方法:

ContractedBlock.gif ExpandedBlockStart.gif 代码
         public  SelectList BindUserArea()
        {
            IQueryable
< Area >  areaList  =  areaRepository.GetAll();
            List
< SelectListItem >  selectListAreas  =   new  List < SelectListItem > ();
            
foreach  (Area item  in  areaList)
            {
                selectListAreas.Add(
new  SelectListItem { Text  =  item.name, 
                                                       Value  =  item.areaid.ToString() });
            }
            
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 ExpandedBlockStart.gif 代码
<% @ Page Title = ""  Language = " C# "  MasterPageFile = " ~/Views/Shared/DefaultSite.Master "
    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 ExpandedBlockStart.gif 代码
         public  ActionResult ListUser ( int ?  page, FormCollection form)
        {
            
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方法如下:
ContractedBlock.gifExpandedBlockStart.gif代码

         public  IQueryable < User >  SelectUser( string  username)
        {
             username 
=  username  ??   "" ;
             IQueryable
< User >  users  =  userRepository.GetAll().Where(u  =>
                                           u.username.Contains(username));  // LINQ模糊查询
              return  users;
        }

 

      页面顶部代码中Inherits属性指定的是页面接收的数据类型,IpagedList是MvcPaging中的方法,这里不作介绍,给个相关文章的链接:参考>>(ASP.NET MVC 分页)。更多总结会陆续更新上来。

转载于:https://www.cnblogs.com/xuezhizhang/archive/2010/02/06/1664892.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值