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">
           
        </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; }

posted on 2014-02-21 16:41 水墨.MR.H 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/StudyLife/p/3559725.html

MVC3 学习总结一(未发布)相关推荐

  1. 亚马逊重组游戏开发部门:数个未发布游戏被“扼杀”;台积电明年开始为苹果iPhone生产5nm处理器……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  2. 爆料:2999 元 的 Redmi K40 Pro 搭载骁龙 888,K40 搭载未发布次旗舰芯片

    IT之家1月19日消息 数码博主 @数码闲聊站 今日爆料称,Redmi 下个月的发布会上至少将推出两款 K40 系列新机,包括定价 2999 元的 Redmi K40 Pro 和定价未曝光的 Redm ...

  3. 极客日报:周鸿祎,微信靠摇妹子起家;红米 K40 未发布就炸?真相来了;滴滴高管立军令状:若触碰安红线指标,全年安全绩效清零...

    一.互联网快讯 1.周鸿祎:微信是靠摇妹子起家 在网上公开的一段视频中,360 董事长周鸿祎谈起了微信的发家史.周鸿祎说道,微信现在是很伟大的一款产品,但是张小龙曾经的一篇自述中提到微信最早做出来的突 ...

  4. 极客日报第 74 期:周鸿祎:微信靠摇妹子起家;红米 K40 未发布就炸?真相来了;滴滴高管立军令状:若触碰安全红线指标,全年安全绩效考核结果清零

    文章目录 一.互联网快讯 二.程序员专属 三.Github 每日精选 四.CSDN 社区优质博文精选 一.互联网快讯 1.周鸿祎:微信是靠摇妹子起家 在网上公开的一段视频中,360 董事长周鸿祎谈起了 ...

  5. ASP.NET MVC3 学习笔记(一)MVC模式简介

    以下文字摘自 ASP.NET MVC3 高级编程 MVC将应用程序的用户界面(User Interface,UI)分为三个主要部分: 模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则 视图 ...

  6. MVC3学习第六章 排山倒海第二变----使用 Entity Framework Code-First 进行数据访问

    本章学习内容 1.Entity Framework 4.1介绍 2.Entity Framework Code-First 进行数据访问 3.利用EF实现用户的增加和列表功能 1.Entity Fra ...

  7. MVC3学习第十三章 佟掌柜第二弹——MVC3下利用陕北吴旗娃的分页控件实现数据分页...

    本章学习内容 1.了解陕北吴旗娃的Mvc分页控件 2.利用分页控件实现MVC3下的商品分页 3.利用分页控件实现MVC3下一个页面多个分页以及ajax分页效果 1.了解陕北吴旗娃的Mvc分页控件 在w ...

  8. 1.初学MVC3学习笔记1

    一.首先我们新建了一个MVC3的工程项目,并且在Controllers的文件夹添加了新的类然后在里面写方法 1.第一个方法是public string Index()这只是返回一个string类型的字 ...

  9. MVC3学习:利用mvc3+ajax实现登录

    用到的工具或技术:vs2010,EF code first,JQuery ajax,mvc3. 第一步:准备数据库. 利用EF code first,先写实体类,然后根据实体类自动创建数据库:或者先创 ...

最新文章

  1. 坐标下降+随机梯度下降
  2. 基于Windows Server 2003 ntbackup下数据文件的完整备份与差异备份
  3. mysql服务器_windows mysql服务器
  4. 【渝粤教育】国家开放大学2018年秋季 3950T金融基础 参考试题
  5. 限制 计算机中 某用户上网 win7,利用win7限制上网时间的方法
  6. 弹出键盘布局上移_评测 | 别买了HHKB键盘不知道这些新功能!
  7. 一个普通二叉树的遍历
  8. TCP/IP基础介绍
  9. Windows 程序注册表常用键名——CurrentVersion
  10. 学生信息管理系统V1.0
  11. Instruments
  12. colorkey唇釉是否安全_colorkey唇釉成分安全吗
  13. Connection to the other side was lost in a non-clean fashion
  14. C++各种经典小游戏
  15. Arduino人体红外感应+继电器
  16. java仿QQ程序4.0
  17. 7.2 布朗运动-两种构造方法
  18. Altium Designer使用简介
  19. 喂喂喂彭彭嘭GOGOGO
  20. win10 CPU占用率过高 经常100%

热门文章

  1. android怎么垂直居中且靠右,placeholder 靠右垂直居中/位置兼容
  2. mysql 平均值 排序_MySQL按平均两个平均值排序
  3. 简单shell:删除五日之前的日志文件
  4. LeetCode 15. 三数之和 思考分析(双指针解)
  5. php 字符串匹配 like,ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法...
  6. ffplay分析 (音视频同步:主时钟为音频)
  7. kali linux编辑记事本,kali linux操作系统
  8. php 获取指定时间 次日,PHP时间判断语句
  9. UVA 116——Unidirectional TSP
  10. 26. 删除排序数组中的重复项 golang