我要做到以下幾點:下拉列表中MVC
1:在register.aspx添加兩個下拉列表[說ddlRole,ddlGender]
2:填充下拉列表[ddlRole應從數據庫填充,ddlRole應該有兩個靜態字段]
3:在提交我想獲得兩個下拉列表中選定的值。
請幫忙。
在此先感謝。
我要做到以下幾點:下拉列表中MVC
1:在register.aspx添加兩個下拉列表[說ddlRole,ddlGender]
2:填充下拉列表[ddlRole應從數據庫填充,ddlRole應該有兩個靜態字段]
3:在提交我想獲得兩個下拉列表中選定的值。
請幫忙。
在此先感謝。
那麼,你的問題是「你能告訴我如何建立一個穿梭?」。但我會盡力向你展示一個小例子,它會幫助你(我真的希望)
首先,如果你想在頁面上獲得下拉菜單,你需要創建它。
就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應用程序。
祝你好運!
「爲我做作業/給我發送編碼」問題的工作量非常大。 – Webjedi 2010-04-07 23:37:07
我同意,但很有趣。我真的很想讓人們更多地瞭解MVC – 2010-04-08 05:21:31
這很棒,幫助了我很多。 同時我檢查了Scottgu博客。 謝謝安德烈。 :) – Zerotoinfinity 2010-04-10 15:13:54
好吧,你試過什麼?它是如何發展的? – 2010-04-07 20:07:56
是的Mahesh,我已經嘗試過了,我無法完全完成。這是我在這裏發佈這個問題的唯一原因。 再次感謝您的回覆我從Andrey和scottgu那裏得到了答案。 – Zerotoinfinity 2010-04-10 15:15:40