Я чрезвычайно новичок в ASP/MVC3/C#, но в настоящее время беру проект, который требует, чтобы я перечислял всех пользователей в базе данных как выпадающий список, в идеале я хочу отфильтровать это, чтобы он показывал только пользователей в определенных ролях (т.е. Admin, Staff или Student).Включая модель в модель, я думаю?
Однако моя проблема заключается в следующем, у меня есть контроллер (Requests.cs) с методом, который делает следующее, и позволяет мне идти к http://server/Requests/UserList
:
public ActionResult UserList()
{
// Create our view model
var users = Membership.GetAllUsers();
var model = new StudentListViewModel
{
Users = users.OfType<MembershipUser>().Select(x => new SelectListItem
{
Value = x.ProviderUserKey.ToString(),
Text = x.UserName
})
};
return View(model);
}
модель представления, которая выглядит как это:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace AcademicRegistry.ViewModels
{
public class StudentListViewModel
{
[Display(Name = "select user")]
public string SelectedUser { get; set; }
public IEnumerable<SelectListItem> Users { get; set; }
}
}
И соответствующий вид:
@model AcademicRegistry.ViewModels.StudentListViewModel
@using (Html.BeginForm())
{
@Html.LabelFor(x => x.SelectedUser)
@Html.DropDownListFor(x => x.SelectedUser, Model.Users)
<button type="submit">OK</button>
}
Все Тк ese работает нормально (на самом деле это весь код, который я нашел из другого сообщения здесь), и это представление отображает то, что я хочу, то есть выпадающий список со значением, установленным для userId, и текст, отображаемый как имя пользователя.
Однако я хочу это будет отображаться в другой точки зрения, а именно EditUser, однако это уже имеет модель, связанную с ним (@model AcademicRegistry.Models.Requests):
@model AcademicRegistry.Models.Requests
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Requests</legend>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.LabelFor(model => model.StudentId)
</div>
<div class="editor-field">
*Wanting the dropdown list to show here*
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
мне было интересно, если кто-нибудь знал, как я собираюсь сделать свое выпадающее шоу, где это нужно? Этот раскрывающийся список будет использоваться на нескольких страницах, поэтому в идеале его нужно будет повторно использовать, и, как я уже сказал, отфильтрован, чтобы показывать только пользователей, которые попадают в 3 роли, которые у меня установлены.
Как вы навигации с другими видами? Являются ли они PartialView? Вы перенаправляетесь через другой контроллер? – codingbiz