zoukankan      html  css  js  c++  java
  • MVC3 学习总结一(未发布)

    MVC:  Model,View,Control

    设置View中的数据

    1. 返回model,View中强类型化

    Control:

    public ActionResult Browse(string Genre)
           {
               var Album = db.Genres.Include("Albums").Single(c => c.Name == Genre);
               ViewData["Genre"] = Genre;
               return View(Album);
           }

    View: 

      @model Mvc_MusicShop_diy.Models.Genre   (强类型化,一个View只能强类型化一个)

    类似的 当 control 返回  list<xx>集合,view 应当如下强类型化

    @model List<Mvc_MusicShop_diy.Models.Genre> 

    or 

    @model  IEnumerable<Mvc_MusicShop_diy.Models.Genre>

    使用:

    <ul>
    @foreach (var Genre in Model)
    {
    <li>
    @Html.ActionLink(@Genre.Name, "Browse", new { Genre=@Genre.Name})
    </li>

    }
    </ul>

    2.  ViewData

    Control 设置:ViewData["Provinces"] = db.Provinces.ToList();

    View使用:      @using Mvc_MusicShop_diy.Models

                                   ViewData["Provinces"]   as  List<Province>

    3.  ViewBag

    ViewBag.title=”购物车页面”   //设置View 页面的html元素的值

    设置模版View

    1._ViewStart.cshtml 代码制定了页面的默认模版的路径

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
     
    查看模版页面代码 
     
    <!DOCTYPE html>
    <html>
    <head>
        <title>@ViewBag.Title</title>
        <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
        <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    </head>
    <body>
        <div class="page">
            <div id="header">
                <div id="title">
                    <h1>欢迎光临南京网上商城</h1>
                </div>
                <div id="logindisplay">
                    @Html.Partial("_LogOnPartial")
                </div>
                <div id="menucontainer">
                    <ul id="menu">
                        <li>@Html.ActionLink("商城主页", "Index", "Home")</li>
                        <li>@Html.ActionLink("关于商城", "About", "Home")</li>
                        <li>@{Html.RenderAction("CartSummary", "ShoppingCart", "");}</li>
     
                    </ul>
                </div>
            </div>
           
            @*@{Html.RenderAction("Category", "Home");}*@
           
            <div id="main">
                @RenderBody()
            </div>
            <div id="footer">
            关于我们|联系我们|人才招聘|商家入驻|广告服务|手机京东|友情链接|销售联盟|商城社区|南京商城公益
            </div>
        </div>
    </body>
    </html>
     
     
    注意: 所有view默认模版代码里,有完整的 html 标记 ,包含title,body
             @RenderBody() 占位符是view页面的代码所在的位置
     
     
     
    2.  通用模版 

    [ChildActionOnly]    //表明了,通过url :  /control/CartSummary 访问是不存在的;只作为其他View的一部分
           public ActionResult CartSummary()
           {
               var cart = ShoppingCart.GetCart(this.HttpContext);
                           ViewData["CartCount"] = cart.GetItemsCount();

                           return PartialView();  //或者 PartialView("CartSummary");

           }

     

    在 _ViewStart.cshtml 中使用

    <li>   @{Html.RenderAction("CartSummary", "ShoppingCart", "");}  </li>

    注意:@{     }

    MVC3自带的客户端验证和服务端验证

    原理:model与view 模型 绑定

    必须引用:

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

    @Html.ValidationSummary(true)  在指定地方将错误集中展示  ,生成的html代码为

      <ul><li>错误1</li><li>错误2</li></ul>

    @Html.ValidationMessageFor(model => model.Title)     展示title出错的信息(根据model中类型与属性自动 js 判断和服务端判断)

    服务端根据 ModelState.IsValid   Bool 的值 (根据model相关约束验证后是否有错误)

       [HttpPost]
            public ActionResult Create(Album album)
            {
                
                if (ModelState.IsValid)
                {
                    db.Albums.Add(album);
                    db.SaveChanges();
                    return RedirectToAction("Index");  
                }
     
                return View(album);
            }

    Model 中添加自定义约束

    比如: 某不能为空,若为空提示自定义的错误消息;view中显示的元素名称为XX?email,phone 正则验证;

    首先得引用命名空间

    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;

    [DisplayName("手机号")]

    [Required(ErrorMessage = "手机号不能为空")]

    [RegularExpression(@"^1[3|4|5|8]d{9}$", ErrorMessage = "手机号格式错误")]

    public  string phone{get;set;} 

    [ScaffoldColumn(false)]   //主键;当与view模型绑定生成自动生成html元素的时候,是否隐藏该列
      public int AddressId { get; set; }

     

  • 相关阅读:
    29-赫夫曼树
    28-线索化二叉树
    27-顺序存储二叉树
    26-二叉树的遍历查找和删除
    25-二叉树的概念
    24-逻辑结构分析
    23-哈希表
    22-查找算法
    21-堆排序
    Mui-列表/table-view
  • 原文地址:https://www.cnblogs.com/StudyLife/p/3559725.html
Copyright © 2011-2022 走看看