2010-04-07 173 views
-1

我要做到以下幾點:下拉列表中MVC

1:在register.aspx添加兩個下拉列表[說ddlRole,ddlGender]

2:填充下拉列表[ddlRole應從數據庫填充,ddlRole應該有兩個靜態字段]

3:在提交我想獲得兩個下拉列表中選定的值。

請幫忙。

在此先感謝。

+0

好吧,你試過什麼?它是如何發展的? – 2010-04-07 20:07:56

+0

是的Mahesh,我已經嘗試過了,我無法完全完成。這是我在這裏發佈這個問題的唯一原因。 再次感謝您的回覆我從Andrey和scottgu那裏得到了答案。 – Zerotoinfinity 2010-04-10 15:15:40

回答

7

那麼,你的問題是「你能告訴我如何建立一個穿梭?」。但我會盡力向你展示一個小例子,它會幫助你(我真的希望)

首先,如果你想在頁面上獲得下拉菜單,你需要創建它。

就MVC而言,您需要創建一個View。 這一觀點MVC風格的aspx頁面

下面

是一個例子:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 
<h2>Register</h2> 

這是一個普通的空白頁面。

讓我們填寫下拉菜單。

<h2>Register</h2> 
<%= Html.DropDownList("ddlRole") %> 
<%= Html.DropDownList("ddlGender") %> 

好的。現在,讓系統顯示我們的視圖。 要做到這一點,我們需要一臺電機。就MVC而言,它稱之爲Controller。

與方法創建一個類:

public class SetupController : Controller 
{ 
     public ActionResult Register() 
     { 
      return View(); 
     } 
} 

如果現在將嘗試啓動,你應該看到兩個下拉列表的頁面。 不幸的是,它們將是空的。 顯然他們是空的,因爲你沒有告訴如何填補他們。

控制器的主要目的是連接包含所有應該處理和顯示的數據的模型。換句話說,控制器從模型(M)獲取數據,準備好併發送到視圖(V)。

所以,首先我們需要調整我們的控制器,所以它會告訴視圖關於下拉內容的信息。 最簡單的方法是使用的ViewData集合:

public ActionResult Register() 
     { 
      ViewData["ddlRole"] = new[] { 
              new SelectListItem() {Text = "Customer", Value = "Customer"}, 
              new SelectListItem() {Text = "Supervisor", Value = "Supervisor"}, 
              new SelectListItem() {Text = "Admin", Value = "Admin"}, 
             }; 
      ViewData["ddlGender"] = new[]{ 
              new SelectListItem() {Text = "Male", Value = "Male"}, 
              new SelectListItem() {Text = "Female", Value = "Female"} 
             }; 
      return View(); 
     } 

你可以從這個例子,我創建了動態下拉式菜單內容見。 在你的情況下,你可以使用你的數據庫來填充下拉,只要你想。

如果您現在嘗試打開您的頁面,您會看到您的下拉列表中現在填充了數據!

太棒了!

如果你問,視圖如何知道下拉使用什麼內容,我會回答MVC使用了很多約定。其中一個約定是,當View生成其控件時,通過與該控件的名稱相同的鍵(即「ddlRole」,「ddlGender」)來查找該控件的內容。 由於您將值ViewData的關鍵,MVC很容易用文本填充你的下拉菜單!

酷!

往前走。

現在,我們需要從頁面收集數據並將其發送回服務器。

我們需要什麼?

當然,首先我們需要一個提交按鈕:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 


    <h2>Register</h2> 
    <%= Html.DropDownList("ddlRole") %> 
    <%= Html.DropDownList("ddlGender") %> 

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

公開賽在broser頁面一次。 酷!我們有按鈕,但是,如果我們嘗試點擊它,什麼都不會發生。

如果您在經典ASP.NET的角度思考,你會告訴我們忘了提交指定的按鈕的事件,寫代碼隱藏代碼和BLA ... bla..bla ...

在MVC中它有點不同。我們只需要將內容發送到服務器。 要做到這一點,通常你應該有你的頁面上的「格式」標籤:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 

<% using (Html.BeginForm("DoRegister", null)) { %> 
<h2>Register</h2> 
    <%= Html.DropDownList("ddlRole") %> 
    <%= Html.DropDownList("ddlGender") %> 
    <input type="submit" value="Register Me" /> 
<% } %> 

使用此代碼塊將只是包裝我們的標記有開始和結束「形式」的標籤。 這使得瀏覽器從窗體內的所有輸入(在我們的例子中是它的下拉列表)中收集信息,並將它們從它們被打開的位置發回。

嘗試在瀏覽器中打開它,然後單擊按鈕

哎呀,我們得到了一個例外。原因是我們忘記了規則。 我們打算做什麼?我們希望將數據發送到我們的商業模式。 誰應該對此負責?當然,這應該是一個控制器(C),因爲它的模型(M)和查看(V)之間的主要和唯一的連接器

讓新動作加入到同一個控制器:

public ActionResult DoRegister(string ddlRole, string ddlGender) 
    { 
     ////store our ddlRole and ddlGender in the database 
     /// ...... 
     /// ..... 

     return RedirectToAction("Welcome"); 
    } 

在這例如,一旦註冊完成,它會重定向到「歡迎」操作。

要完成一個例子並避免錯誤,我們需要實現歡迎的行動和觀點:

一下添加到控制器:

public ActionResult Welcome() 
    { 
     return View(); 
    } 

,併爲歡迎行動新的視圖(右擊「歡迎光臨」的代碼,並選擇「添加視圖...」):

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 

<h2>Welcome!</h2> 

現在你會看到,一旦你點擊按鈕,它會告訴你歡迎動作執行的結果 - Welc ome頁面。

最後一招 - 讓我們將選定的下拉值發送到歡迎頁面。

要做到這一點,我們首先需要將這些值存儲在從服務器獲取該值的時刻。 在你的情況,你可以使用數據庫,而是使之更簡單,我將使用特殊的TempData集合:

public ActionResult DoRegister(string ddlRole, string ddlGender) 
     { 
      ////store our ddlRole and ddlGender in the database 
      /// ...... 
      /// ..... 

      TempData["SelectedRole"] = ddlRole; 
      TempData["SelectedGender"] = ddlGender; 

      return RedirectToAction("Welcome"); 
     } 

接下來,就讓讓我們歡迎頁面顯示來自TempData集合中的值:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 

<h2>Welcome you, the <%= TempData["SelectedRole"]%> of <%= TempData["SelectedGender"] %>!</h2> 

運行它! 你看到了值嗎? 是的,你做到了!

簡單和容易。

我希望這篇文章能幫助你開始認識ASP.NET MVC是多麼偉大。 但上面的代碼只是冰山的頂部。其實MVC比這更有趣得多。

如果您對獲取更多知識感興趣,我會推薦您閱讀Steven Sanderson的「ASP.NET MVC框架」。 真的很棒的書,包含了一切,開始在MVC上編寫自己的MVC應用程序。

祝你好運!

+3

「爲我做作業/給我發送編碼」問題的工作量非常大。 – Webjedi 2010-04-07 23:37:07

+1

我同意,但很有趣。我真的很想讓人們更多地瞭解MVC – 2010-04-08 05:21:31

+0

這很棒,幫助了我很多。 同時我檢查了Scottgu博客。 謝謝安德烈。 :) – Zerotoinfinity 2010-04-10 15:13:54