ASP.NET MVC 3 - Как заполнить список переключателей из базы данных - PullRequest
4 голосов
/ 20 октября 2011

В Asp.net MVC 3 мои переключатели настроены следующим образом:

<div class="editor-label">
            @Html.LabelFor(m => m.Roles)
        </div>
        <div class="editor-field">
           @Html.RadioButtonFor(model => model.Roles,false) SuperAdmin  
           @Html.RadioButtonFor(model => model.Roles,false) Admin
            @Html.ValidationMessageFor(model =>model.Roles)<br/> 
        </div>

Что работает нормально, но для этого необходимо жестко закодировать значения.Прямо сейчас у меня есть только два значения, но это может измениться в зависимости от данных в моей БД.Как я мог динамически заполнить этот список радиокнопок из базы данных?Спасибо


У меня есть метод Register ActionResult в моем контроллере, например:

public ActionResult Register()
        {
            // On load, query AdminRoles table and load all admin roles into the collection based on the
            // the query which just does an order by
            AdminRolesQuery arq = new AdminRolesQuery();
            AdminRolesCollection myAdminRolesColl = new AdminRolesCollection();
            arq.OrderBy(arq.RoleName, EntitySpaces.DynamicQuery.esOrderByDirection.Ascending);
            myAdminRolesColl.Load(arq);

            // Store The list of AdminRoles in the ViewBag
            //ViewBag.RadioAdminRoles = myAdminRolesColl.Select(r => r.RoleName).ToList();

            ViewData.Model = myAdminRolesColl.Select(r => r.RoleName).ToList();

            return View();
        }

Итак, ViewData.Model имеет список AdminRoles.Как мне получить доступ к этому списку в моей модели?

1 Ответ

3 голосов
/ 20 октября 2011

В вашем контроллере вам нужно будет получить значения из базы данных и поместить их в вашу модель или в viewbag.

ViewBag.RadioButtonValues = db.Roles.Select(r => r.RoleDescription).ToList();

Тогда, по вашему мнению, вы просто используете цикл, чтобы выплюнуть их:

@{
    List<String> rbValues = (List<String>)ViewBag.RadioButtonValues;
}

<div class="editor-field">        
   @foreach (String val in rbValues) {
        @Html.RadioButtonFor(model => model.Roles,false) @val
   }
   @Html.ValidationMessageFor(model =>model.Roles)<br/> 
</div>

(Я не смог скомпилировать / протестировать это, но вы должны иметь возможность исправить / настроить его в соответствии с вашими потребностями.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...