zoukankan      html  css  js  c++  java
  • 无废话MVC入门教程十[实战二:用户管理]

    一、本文目标

    学会制做MVC的管理相关功能

    二、本文目录

    1.查询

    2.修改

    3.删除

    4.代码下载

    1.查询

    1) View代码:

     1 @model PagedList<MVC3.DemoModel.User>
     2 @using Webdiyer.WebControls.Mvc;
     3 @using (Html.BeginForm("Main", "Manage", FormMethod.Get))
     4 {
     5     <span>用户名:</span>
     6     @Html.TextBox("username", ViewData["username"])
     7     <input type="submit" value="查询" />
     8 }
     9 @foreach (MVC3.DemoModel.User user in Model)
    10 {
    11     @user.UserID<span>---</span>@user.UserName<span>---</span> 
    12     @Html.ActionLink("修改", "UserEdit", new { id = user.UserID }) <span>---</span> 
    13     @Html.ActionLink("详细", "UserDetail", new { id = user.UserID }) <span>---</span> 
    14     @Html.ActionLink("删除", "UserRemove", new { id = user.UserID })<span>---</span> 
    15 
    16     <br />
    17 }
    18 <br />
    19 <br />
    20 @Html.Pager(Model, new PagerOptions
    21 {
    22     PageIndexParameterName = "id",
    23     ShowPageIndexBox = true,
    24     FirstPageText = "首页",
    25     PrevPageText = "上一页",
    26     NextPageText = "下一页",
    27     LastPageText = "末页",
    28     PageIndexBoxType = PageIndexBoxType.TextBox,
    29     PageIndexBoxWrapperFormatString = "请输入页数{0}",
    30     GoButtonText = "转到"
    31 })
    32 <br />
    33 >>分页 共有 @Model.TotalItemCount 篇留言 @Model.CurrentPageIndex/@Model.TotalPageCount

    2)Control代码:

     1         public ActionResult Main(int? id = 1)
     2         {
     3             ViewData["username"] = string.Empty;
     4             if (Request.QueryString["username"] != null)
     5             {
     6                 ViewData["username"] = Request.QueryString["username"].ToString();
     7             }
     8             List<Model.User> userList = new List<Model.User>();
     9             int totalCount = 0;
    10             int pageIndex = id ?? 1;
    11             userList = DemoRepository.User.GetList(ViewData["username"].ToString(), 2, (pageIndex - 1) * 2, out totalCount);
    12             PagedList<Model.User> mPage = userList.AsQueryable().ToPagedList(0, 2);
    13             mPage.TotalItemCount = totalCount;
    14             mPage.CurrentPageIndex = (int)(id ?? 1);
    15             return View(mPage);
    16         }

    3)代码解释:由于mvcPager渲染到客户端后为<a href="Manage/Main/1">下一页</a>,所以在查询时只能以get的方式向服务器提交查询条件,在View的代码中我们要修改Form的提交方式

    1 @using (Html.BeginForm("Main", "Manage", FormMethod.Get))

    并且接收到参数后还要回显到文本框中,在Control与View间我们使用ViewData["username"]做数据传递。

    4)效果如下:

    2.修改

    1) View代码:

     1 @model MVC3.DemoModel.User
     2 @using (Html.BeginForm())
     3 {
     4     @Html.LabelFor(user => user.UserName)
     5     <br />
     6     @Html.TextBoxFor(user => user.UserName)
     7     <br />
     8     @Html.LabelFor(user => user.Phone)
     9     <br />
    10     @Html.TextBoxFor(user => user.Phone)
    11     <br />
    12     @Html.LabelFor(user => user.Residential)
    13     @Html.DropDownListFor(user => user.Residential, (SelectList)ViewBag.ViewResidential)
    14     @Html.LabelFor(user => user.UnitNo)
    15     @Html.DropDownListFor(user => user.UnitNo, (SelectList)ViewBag.ViewUnitNo)
    16     @Html.LabelFor(user => user.FloorNo)
    17     @Html.DropDownListFor(user => user.FloorNo, (SelectList)ViewBag.ViewFloorNo)
    18     @Html.LabelFor(user => user.DoorplateNo)
    19     @Html.DropDownListFor(user => user.DoorplateNo, (SelectList)ViewBag.ViewDoorplateNo)
    20     <br />
    21     @Html.HiddenFor(user => user.UserID)
    22     <input type="submit" value="修改" />
    23 }

    2)Control代码:

     1         public ActionResult UserEdit(int id)
     2         {
     3             //取出用户信息
     4             if (id != 0)
     5             {
     6                 Model.User user = DemoRepository.User.Get(new Model.User() { UserID = id });
     7 
     8                 //取出数据,并通过Helper把数据分解
     9                 AddressHelper addressHelper = AddressHelper.GetInstance();
    10                 addressHelper.GetResidetialItem(GetList());
    11                 //反选并使用ViewBag传到View
    12                 ViewBag.ViewResidential = new SelectList(addressHelper.ResidetialItem, "Value", "Text", user.Residential);
    13                 ViewBag.ViewFloorNo = new SelectList(addressHelper.FloorNoItem, "Value", "Text", user.FloorNo);
    14                 ViewBag.ViewUnitNo = new SelectList(addressHelper.UnitNoItem, "Value", "Text", user.UnitNo);
    15                 ViewBag.ViewDoorplateNo = new SelectList(addressHelper.DoorplateNoItem, "Value", "Text", user.DoorplateNo);
    16                 return View(user);
    17             }
    18             return View();
    19         }

    3) 代码解释:

    1 ViewBag.ViewResidential = new SelectList(addressHelper.ResidetialItem, "Value", "Text", user.Residential);

    是为了把数据库中的数据反选到View上

    4)运行效果:

    3.删除

    1)View代码:

    1  @Html.ActionLink("删除", "UserRemove", new { id = user.UserID }, new { @onclick = "return confirm('确定删除吗?');" })<span>---</span> 

    2)Control代码

    1         //删除用户
    2         public void UserRemove(int id, FormCollection formCollection)
    3         {
    4             Model.User user = new Model.User() { UserID = id };
    5             DemoRepository.User.Remove(user);
    6             MessageBox.ShowAndRedirect(this, "删除成功!", "/Manage/Main/");
    7         }

     3)代码解释:

    View中加了“确认删除吗?”对话框。

    Ciontrol中:int id, FormCollection formCollection:以HttpPost的方式进行删除。 

    4)运行效果:

    4.代码下载

    [点击下载] 

    版权:http://www.cnblogs.com/iamlilinfeng

    关于App_Code无法编译的问题,请在App_Code文件夹下,鼠标右键-属性-复制->编译

  • 相关阅读:
    js 操作文件
    Thymeleaf在js中使用表达式
    JUnit5常用注解
    .Net开发步骤
    springboot自定义 HandlerMapping
    期末加分+总结
    SAP ABAP 性能优化技巧 – 修改一组纪录
    SAP ABAP 性能优化技巧 – 视图取代基本表
    Sql Server 日期格式化函数 (转)
    SAP ABAP 性能优化技巧 — 使用二分查找(Binary Search)选项
  • 原文地址:https://www.cnblogs.com/iamlilinfeng/p/2987761.html
Copyright © 2011-2022 走看看