ASP.NET MVC学習ノート-controllerとView伝値

2632 ワード

asp.net2.0のウェブ開発モードでは、アクセスページコントロールを直接ページに書き込むことで、値をページに書き込むのが一般的ですが、Asp.NetMVCモードでは、Controllerでページコントロールにアクセスできなくなりましたが、どのようにしてViewページに値を渡すことができますか?Controllerには2つの辞書(ViewDataとTempData)があり、View間の値の転送を実現し、ControllerはViewData、TempDataを介してViewResultに転送され、ViewResultからViewPageに転送されて値の転送を実現します.
1.TempDataとViewDataの応用
ViewDataは現在のActionに対してのみ有効であるが、TempDataはSessionに少し似ており、すべてのViewにアクセスすることができ、一般的にエラー情報を記録するために使用される.
アクションコード:
    public ActionResult Index()  
    {  
        ViewData["Message"] = "Welcome to ASP.NET MVC!";  
        return View();  
    }  

ページコード:
     

"Message"]) %>


TempDataの使用方式はViewの使用方式と一致する.
2.ViewDataとTextBoxの自動バインド
HtmlHelperを使用してTextBoxを作成する場合、名前をViewDataのKeyと一致させると、次のような値バインドが自動的に実行されます.
    Name:"name") %> 
名称が異なる場合は、TextBoxのリロード値を利用することもできます.
    Name:"name", ViewData["Nm"]) %>  
3.ViewControllerへの値の転送
1). アクションパラメータの利用
    
Name:
Sex:
: public ActionResult Index(string name, string sex) { ViewData["Message"] = "Welcome to ASP.NET MVC!"; ViewData["name"] = name; ViewData["sex"] = sex; return View(); }

2).Requestを利用する.FromまたはRequest.QueryString
    public ActionResult Index()  
    {  
        ViewData["Message"] = "Welcome to ASP.NET MVC!";  
        ViewData["name"] = Request.Form["name"];  
        ViewData["sex"] = Request.Form["sex"];  
        return View();  
    }  

3). FormCollectionによるページ値の取得
    public ActionResult Index(FormCollection form)  
    {  
        ViewData["Message"] = "Welcome to ASP.NET MVC!";  
        User u=new User();  
        u.Name = form["Name"];  
        u.Password = form["Password"];  
        return View(u);  
    }  

4.伝達強さタイプ
1).転送の強いタイプModelのアクションを追加
    public ActionResult ModelDemo()  
    {  
        User u= new User() { UserName="li", Password="abcde" };  
        return View(u);  
    }  

対応するViewもViewPageに続く必要があります.対応コードは次のとおりです.
    

UserName:

Password: