如何在MVC5中创建所有用户的下拉列表

时间:2017-07-04 13:35:15

标签: model-view-controller asp.net-mvc-5

我有一些用户在我的MVC 5应用程序中创建了角色。我有一个票据模型,其中包含基本票证信息。但是现在我想在此故障单模型中添加一个名为“Assigned To”的属性,我想将此属性值分配给可用的用户。

在我看来,我希望有一个所有可用用户的下拉列表,以便我可以选择一个用户来分配票证。如何在我的模型中创建此属性以及如何在我的视图中将其设置为下拉列表?感谢

更新1: 在我的Index()方法中,我已经有一个现有的actionresult模型返回到视图,它是这样的:

Models.Application model = db.Applications
            .Include("Source")
            .Include(.....)
            .SingleOrDefault(m => m.Id == id);

        if (model == null)
        {
            return new HttpNotFoundResult();
        }

        return View(model);

如何将您在Index()方法中建议的代码与我已有的代码合并?

1 个答案:

答案 0 :(得分:0)

查询数据库以获取用户列表,然后将其转换为视图模型。确保不要直接从DB传递User类,因为您将密码,salt等发送到浏览器。您应该将其从DB形状转换为VM形状,仅包含视图中所需的字段。

视图模型:

import numpy as np

try:
    # your code that will (maybe) throw
except np.linalg.LinAlgError as e:
    if 'Singular matrix' in str(e):
        # your error handling block
    else:
        raise

查看:

class MyViewModel
{ 
     public IEnumerable<User> Users { get; set; }
     public string User { get; set;}
}

[HttpGet]
public ActionResult Index()
{
    var viewModel = new MyViewModel()
    {
         Users = <map users from db>
    };

    return this.View(viewModel);
}

然后你的表单回发处理程序:

 <div class="form-group">
    @Html.LabelFor(m => m.User)
    <div class="col-md-10">
        @Html.DropDownListFor(x => x.User, new SelectList(Model.Users, "Id", "Name"), new { @class = "form-control" })
        @Html.ValidationMessageFor(m => m.OriginStation, "", new { @class = "text-danger" })
    </div>
 </div>