Asp.net mvc 如何从mvc3中的数据库获取下拉列表中的数据。?

Asp.net mvc 如何从mvc3中的数据库获取下拉列表中的数据。?,asp.net-mvc,Asp.net Mvc,我正在asp.net中使用MVC3设计一个简单的网页。我使用Sql Server准备了一个数据库,并将此数据库附加到App_数据中。该数据库中有一个表employee 我想在下拉列表中获取员工的姓名。所以我可以选择员工的姓名 因此,请建议我访问下拉列表中员工姓名的模型、视图和控制器代码。我将首先设计一个视图模型,该模型将保存数据: public class EmployeeViewModel { public string SelectedEmployeeName { get; set;

我正在asp.net中使用MVC3设计一个简单的网页。我使用Sql Server准备了一个数据库,并将此数据库附加到App_数据中。该数据库中有一个表employee

我想在下拉列表中获取员工的姓名。所以我可以选择员工的姓名


因此,请建议我访问下拉列表中员工姓名的模型、视图和控制器代码。

我将首先设计一个视图模型,该模型将保存数据:

public class EmployeeViewModel
{
    public string SelectedEmployeeName { get; set; }
    public IEnumerable<SelectListItem> Employees { get; set; }
}
公共类EmployeeViewModel
{
公共字符串SelectedEmployeeName{get;set;}
公共IEnumerable雇员{get;set;}
}
然后控制器:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        IEnumerable<Employee> employees = GetEmployeesFromDb();
        var model = new EmployeeViewModel
        {
            Employees = employees.Select(x => new SelectListItem
            {
                Value = x.Name,
                Text = x.Name
            })
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(EmployeeViewModel model)
    {
        return Content("Selected employee name: " + model.SelectedEmployeeName, "text/plain");
    }
}
公共类HomeController:控制器
{
公共行动结果索引()
{
IEnumerable employees=GetEmployeesFromDb();
var模型=新员工视图模型
{
雇员=雇员。选择(x=>new SelectListItem
{
Value=x.Name,
Text=x.名称
})
};
返回视图(模型);
}
[HttpPost]
公共行动结果索引(EmployeeViewModel模型)
{
返回内容(“所选员工姓名:+model.SelectedEmployeeName,text/plain”);
}
}
最后是强类型视图:

@model EmployeeViewModel
@using (Html.BeginForm())
{
    @Html.DropDownListFor(
        x => x.SelectedEmployeeName,
        new SelectList(Model.Employees, "Value", "Text")
    )
    <input type="submit" value="OK" />
}
@model EmployeeViewModel
@使用(Html.BeginForm())
{
@Html.DropDownListFor(
x=>x.SelectedEmployeeName,
新选择列表(Model.Employees,“值”、“文本”)
)
}
1)创建一个从DB填充列表的方法

2) 设置ViewModel以保存列表和选定值

//模型

 public List<SelectListItem> CategoriesSelectList()
            {

                var query = from c in _yourRepository.GetAll()
                            select c;

                List<SelectListItem> obj = new List<SelectListItem>();

                foreach (var item in query)
                {

                    var result = new SelectListItem();
                    result.Text = item.name;
                    result.Value = item.id.ToString();
                    obj.Add(result);

                }
                return obj;
            }
//看法

<div class="editor-label">
    <%: Html.LabelFor(model => model.categoryId) %>
</div>
<div class="editor-field">
    <%: Html.DropDownListFor(model => model.categoryId,Model.CategoryList()) %>
    <%: Html.ValidationMessageFor(model => model.categoryId) %>
</div>

型号.类别ID)%>
model.categoryId,model.CategoryList())%>
型号.类别ID)%>

你真的应该特别检查一下我感谢你的回答。但我仍然有一些困惑。方法GetEmployeesFromDb()的定义是什么;在您上面的解释中,我应该构建一个名为employees的控制器类吗?@Pushpendra Kuntal,
GetEmployeesFromDb
方法是您应该编写的方法,它将查询数据库并返回
employees
模型。你不需要另一个控制器。您可以定义一个存储库类,并将数据访问逻辑放入该存储库类中。因此
GetEmployeesFromDb
将进入存储库。亲爱的先生,请告诉我如何在存储库类中编写查询。您的帮助将非常感谢我…@Pushpendra Kuntal,阅读一些教程和文档,亲自尝试,如果您遇到一些困难,请毫不犹豫地展示您所尝试的,我将很乐意提供帮助。是开始学习的好地方。有一节介绍如何实现存储库模式。
public ActionResult Create()
        {
            //set the id for the VIEWMODEL property, if necesary
            var e = new ViewModel();
            e.categoryId = 1;//set the selected value

            return View(e);
        }
<div class="editor-label">
    <%: Html.LabelFor(model => model.categoryId) %>
</div>
<div class="editor-field">
    <%: Html.DropDownListFor(model => model.categoryId,Model.CategoryList()) %>
    <%: Html.ValidationMessageFor(model => model.categoryId) %>
</div>