2012-08-31 95 views
1

我有一個partialView,其中包含一個<select>,它包含正在註冊的用戶的可用角色列表。我是MVC的新手,我正在努力弄清楚如何綁定<select>在asp.net中綁定DropDownList MVC PartialView

通常我會做這個的ASCX的Page_Load,例如:

rolesSelect.DataSource = Roles.GetAllRoles().OrderBy(r => r); 
rolesSelect.DataBind(); 

但隨着MVC它是完全不同的。我的觀點和partialView是這個樣子:

Users.cshtml

@model IEnumerable<RobotDog.Models.UserModel> 

<table>...</table> 
<div id="addUser"> 
    @Html.RenderPartial("_AddUser") 
</div> 

_AddUser.cshtml

@model RobotDog.Models.RegisterModel 

@using(Html.BeginForm("AddUser","Admin", FormMethod.Post)) { 
    @Html.EditorFor(x => x.Email, new { @class = "input-xlarge", @placeholder = "Email"}) 
    @Html.EditorFor(x => x.UserName, new { @class = "input-xlarge", @placeholder = "User Name"}) 
    @Html.EditorFor(x => x.Password, new { @class = "input-xlarge", @placeholder = "Password"}) 
    @Html.DropDownListFor(????) //not sure how to bind this? 
} 

我的問題是:

  1. 我需要通過適當的收集控制器到partialView的視圖還是有更實用的可擴展方法?
  2. 是否有可能爲partialView控制器,以便我只需要擔心將partialView添加到視圖而不是視圖的控制器?
  3. 這真的都歸結爲將數據集合綁定到PartialView中的DropDownList的標準做法是什麼?
+0

這似乎暗示着用戶只會在一個角色中,這是否正確? –

+0

我簡化了這個問題。實際上它會是一個ListBox – bflemi3

回答

2

Roles集合添加到模型中,並根據需要構造選擇列表。

@Html.DropDownListFor(x => x.Role, 
    Model.Roles.Select(role => 
     new SelectListItem() { Text = role.Name, Value = role.Value } 
    ) 
) 

Roles添加到模型的替代方法是創建一個HTML助手方法。這是一個擴展方法,所以添加這樣的:

namespace ExtensionMethods 
{ 
    public static class HtmlHelperExtensions 
    { 
     public static IEnumerable<SelectListItem> GetRoles(this HtmlHelper helper) 
     { 
      return new[] { 
       new SelectListItem() { Text="Role1" }, 
       new SelectListItem() { Text="Role2" }, 
      }; 
     } 
    } 
} 

然後註冊在Web.Config命名空間中的Views文件夾下:

<system.web.webPages.razor> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="ExtensionMethods"/> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

現在,您可以創建下拉列表:

@Html.DropDownListFor(x => x.Role, Html.GetRoles()) 
+0

愚蠢的問題 - 如何將Roles集合添加到模型中?謝謝dbaseman – bflemi3

+0

@ bflemi3我只是想添加一個屬性到模型類,並在控制器中初始化它。但是無論什麼對你有用。 (也可以將它放在ViewBag中,或者創建一個HTML助手)。 – McGarnagle

+0

對不起,現在已經很晚了,我沒有想直。我不能有一個'公共角色角色{get; }屬性。我將如何將其添加到模型? – bflemi3

相關問題