你最好把這些東西在你的模型,以便例如
控制器
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
ViewData["Time"] = DateTime.Now.ToString(CultureInfo.InvariantCulture);
var mdl = new List<SelectListItem>
{
new SelectListItem
{
Value = "1",
Text = "Module One"
},
new SelectListItem
{
Value = "2",
Text = "Module Two"
}
};
ViewData["moduleList"] = new SelectList(mdl, "Value", "Text");
var model = new HomeModel
{
SelectedItem = 1,
items = mdl
};
return View(model);
}
}
現在創建模型
namespace MvcApplication1.Models
{
public class HomeModel
{
public int SelectedItem { get; set; }
public IEnumerable<SelectListItem> items { get; set; }
}
}
你的頁面的外觀像這樣在測試現場
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.HomeModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: ViewData["Message"] %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<div>
<%=Html.DropDownList("SelectedItem", Model.items)%>
</div>
</asp:Content>
現在解釋一下,你已經爲視圖創建了一個模型,並且這個模型被控制器返回給頁面,頁面從一個ViewPage繼承,ViewPage接受了由該模型提供給它的模型的泛型參數控制器
該標記說「給我一個HTML下拉菜單並將選定的項目標記爲第一個選定的項目來自模型(這是你的控制器提供它)。
在現實世界中的數據將來自於你的數據層,而不是直接在控制器(我喜歡在控制器中儘可能少的代碼)
編輯:
您有一個錯字你示例請嘗試此操作
<%= Html.DropDownList("moduleList") %>
您是否在呈現的頁面上查看源代碼?那裏下降? – 2012-04-03 11:13:54
它最好將這個東西存儲在一個模型中,我已經發布了一個完整的例子,下面是一些解釋,我希望這可以幫助。 – 2012-04-03 11:29:28
不,我沒有看到在我的原始答案中添加的源 – Deb 2012-04-03 11:42:01