• 读保哥《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;}

    今天暂时就写到这吧

  • 相关阅读:
    【转】漫谈linux文件IO--io流程讲的很清楚
    iostat命令
    【转】ATA Secure Erase
    同步IO和异步IO
    fio2.1.10--README
    【转】地址空间、内核空间、IO地址空间
    博客收藏--sailing的博客
    Cosmos OpenSSD架构分析--HOST interface(未完)
    nginx 过滤zip 类型的文件
    freeswitch GUI界面(portal)
  • 原文地址:https://www.cnblogs.com/wangheblog/p/2444745.html
Copyright © 2020-2023  润新知