zoukankan      html  css  js  c++  java
  • 读保哥《ASP.NET MVC2开发实战》第三回(Controller2)

    区分ViewData和TempData

    viewdata属性是一个ViewDataDictionary类,这里就不介绍了;

    用法:

    Controller代码:

    public ActionResult Index()

    {

    ViewData["name"]="王贺";

    return View();
    }

    View代码:

    <%:ViewData["name"]%>//这行代码就引用了{ViewData["name"]="王贺";}便把“王贺”显示出来了;

    TempData:

    这个就特了,用法跟ViewData一样,但TempData只在浏览器执行一次就没了,当你再去刷新的话就没了(好神奇噢!!!),所以他只是暂存,暂存多久呢,保哥说是“一次网页请求”。

    模型绑定

    再来讨论一下模型绑定这个问题(其实在第一个项目中已经涉及到了这个问题),在这就好好了解了解

    (1)简单绑定:

    View:
    <%:Html.TextBox("uname")%>

    <%:ViewData["name"]%>//获取Controller的ViewData

    Controller:

    public ActionResult Index(string name)

    {

       ViewData["name"]=name;//接收从View传来的参数Html.TextBox("uname"),在这里的name就是<input type="TextBox" name="uname">中name的属性uname传到了服务器;

    return View();

    }

    如果写成webform的话就是这种:

    text.htm:

    <form action="Index.aspx" >

    <input type="TextBox" name="uname">

    <input type="submit" value="submit"/>

    </form>

    Index.aspx:

    Request.Form["uname"];

    这种绑定还有另一种方法;

    MVC提供了FormCollection类;

    Controller还可以这么写:

    public ActionResult Index(FormCollection form)

    {

       ViewData["name"]=form["uname"];

    return View();

    }

    (2)复杂绑定(利用类来绑定,类似于ADO.NET的强类型)

    例如:有三个元素,Name,Email,Message

    那就定义一个类:

    Class Msg

        public Name{get;set;}

        public Email{get;set; }

    public Message {get;set;}

    View:

    <%:Html.TextBoxFor(x=>x.Name)%>

     <%:Html.TextBoxFor(x=>x.Email)%>

    <%:Html.TextBoxFor(x=>x.Message)%>

    <%:ViewData["name"]%>

    <%:ViewData["Email"]%>

    <%:ViewData["Message"]%>

     Controller:

    public ActionResult Index(Msg msg)//调用类Meg

    {

       ViewData["name"]=msg.Name;

    ViewData["Email"]=msg.Email;

    ViewData["Message"]=msg.Message;

    return View();

    }

    (3)多个复杂模型绑定

    <input type="TextBox" name="form1.Name"/>

    <input type="TextBox" name="form1.Email"/>

    <input type="TextBox" name="form1.Message"/>

    <input type="TextBox" name="form2.Name"/>

    <input type="TextBox" name="form2.Email"/>

    <input type="TextBox" name="form2.Message"/>

    Controller:

    public ActionResult Index(Msg form1,Msg form2)//调用类Meg

    {

       ViewData["form1.name"]=form1.Name;

    ViewData["form2.name"]=form2.Name;

    return View();

    }

    (4)利用bind属性来限制更新元素:

    当你来提交表单中的元素,有些元素你不行提交到数据库,你就可以通过Bind属性来限制:

    public ActionResult Index([Bind(Exclude="Name")]Msg msg)//这样就可以限制name的绑定

    {

    }

    public ActionResult Index([Bind(include="Email,Message")]Msg msg)//这样就可以限制name的绑定

    {

    }

    也可以在类中定义:

    [Bind(Include="Email,Message")]

    Class Msg

        public Name{get;set;}

        public Email{get;set; }

    public Message {get;set;}

    今天暂时就写到这吧

  • 相关阅读:
    mac下git中文乱码
    sublime安装插件
    Vue + ElementUI的电商管理系统实例08 角色列表
    Vue + ElementUI的电商管理系统实例07 权限列表
    Vue + ElementUI的电商管理系统实例06 删除用户
    Vue + ElementUI的电商管理系统实例05 修改用户
    Vue + ElementUI的电商管理系统实例04 添加用户
    Vue + ElementUI的电商管理系统实例03 用户列表
    Vue + ElementUI的电商管理系统实例02 主页
    Vue 项目中的ESlint语法报错问题
  • 原文地址:https://www.cnblogs.com/wangheblog/p/2444745.html
Copyright © 2011-2022 走看看