• ASP.NET MVC 使用总结(一)


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

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

    代码
            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页面代码:

    代码
    <%@ 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;  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=" 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:

    代码
            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方法如下:
    代码

            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 分页)。更多总结会陆续更新上来。

  • 相关阅读:
    7. Reverse Integer
    4. Median of Two Sorted Arrays
    微服务实战系列(四)-注册中心springcloud alibaba nacos-copy
    微服务实战系列(五)-注册中心Eureka与nacos区别-copy
    Restful、SOAP、RPC、SOA、微服务之间的区别-copy
    从SOA到RPC、SOAP、REST-copy
    spring-session实现分布式集群session的共享-copy
    深入理解 RESTful Api 架构-copy
    RESTful 架构详解-copy
    SpringBoot使用MyBatis-Generator详解-copy
  • 原文地址:https://www.cnblogs.com/xuezhizhang/p/1664892.html
Copyright © 2020-2023  润新知