Asp.net mvc 2 在asp.net mvc 2.0中将数据库中的数据绑定到DropDownListFor
我是asp.NETMVC2.0的新手,我试图搜索这篇文章,但仍然无法得到我想要的答案 我有一个表格可以将角色分配给每个员工。因此,我创建了一个表单,可以输入员工的姓名并选择他们所处的角色。该角色正在从表角色中删除。我使用linq to sql从表角色查询RoleName和RoleID,并希望将其绑定到视图中的DropDownListFor 我有一个模型:Asp.net mvc 2 在asp.net mvc 2.0中将数据库中的数据绑定到DropDownListFor,asp.net-mvc-2,Asp.net Mvc 2,我是asp.NETMVC2.0的新手,我试图搜索这篇文章,但仍然无法得到我想要的答案 我有一个表格可以将角色分配给每个员工。因此,我创建了一个表单,可以输入员工的姓名并选择他们所处的角色。该角色正在从表角色中删除。我使用linq to sql从表角色查询RoleName和RoleID,并希望将其绑定到视图中的DropDownListFor 我有一个模型: public class UserModels { public string name { get; set; } publi
public class UserModels
{
public string name { get; set; }
public string role { get; set; }
}
这就是我在控制器中所做的:
[HttpPost]
public ActionResult UserMaintenance(FormCollection frm)
{
if (ModelState.IsValid)
{
EMP_DBSEntities context = new EMP_DBSEntities();
tblUserLogin user = new tblUserLogin();
user.UserName = frm["userLogin"].ToString();
IEnumerable<SelectListItem> role_list = context.tblRoles.Select(d => new SelectListItem
{
Value = d.RoleID.ToString(),
Text = d.RoleName
});
context.AddTotblUserLogins(user);
context.SaveChanges();
return View();
}
else
{
return View();
}
}
谁能告诉我如何将角色列表绑定到我视图中的DropDownList for
谢谢。为了创建下拉列表,您需要一个具有两个属性的视图模型:一个包含选定值的标量属性和一个包含可用选项的集合属性 因此,在ASP.NET MVC中,请始终从编写视图模型开始:
public class UserRoleViewModel
{
[DisplayName("name")]
public string EmployeeName { get; set; }
[DisplayName("role")]
public int? SelectedRoleId { get; set; }
public IEnumerable<SelectListItem> Roles { get; set; }
}
最后是一个观点:
<%@ Page
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<UserRoleViewModel>"
%>
...
<% using (Html.BeginForm()) { %>
<%= Html.EditorFor(x => x.EmployeeName) %>
<%= Html.DropDownListFor(x => x.SelectedRoleId, Model.Roles, "-- Role --") %>
<button type="submit">OK</button>
<% } %>
为了创建下拉列表,您需要一个具有两个属性的视图模型:一个包含选定值的标量属性和一个包含可用选项的集合属性 因此,在ASP.NET MVC中,请始终从编写视图模型开始:
public class UserRoleViewModel
{
[DisplayName("name")]
public string EmployeeName { get; set; }
[DisplayName("role")]
public int? SelectedRoleId { get; set; }
public IEnumerable<SelectListItem> Roles { get; set; }
}
最后是一个观点:
<%@ Page
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<UserRoleViewModel>"
%>
...
<% using (Html.BeginForm()) { %>
<%= Html.EditorFor(x => x.EmployeeName) %>
<%= Html.DropDownListFor(x => x.SelectedRoleId, Model.Roles, "-- Role --") %>
<button type="submit">OK</button>
<% } %>
什么错误?错误信息是什么?这很奇怪,因为我不是在脑子里发明这个代码的。这是我从一个完全工作的示例中复制粘贴的东西,我刚刚设置了这个示例。所以我猜你一定改变了什么。这是怎么一回事?您使用的是什么版本的框架?我注意到你用asp.net-mvc-2标记了你的问题,所以我更新了我的视图代码,因为最初我发布了一个Razor示例。现在更新了WebForms视图引擎示例。这是我的查询var query=from _context.tblRoles select _role.ToList;然后在查询{var role=new[]{new RoleID=roleItem.RoleID,RoleName=roleItem.RoleName};}中为每个var roleItem分配它然后错误是找不到隐式类型数组的最佳类型。为什么要编写所有这些代码LINQ和循环之类的东西?简单地说:Roles=new SelectListcontext.tblRoles、RoleID、RoleName在构建视图模型时直接创建。但我在单击“提交”时遇到一个问题,即它有一个错误对象引用未设置为对象的实例。在x.SelectedRoleId、Model.Roles、-Role-%>行中,我猜您没有在POST操作中分配Roles属性,就像在GET操作中那样。您认为DropDownList将从何处获取其项目?正如您所知,提交表单时,只有选定的值被发送到服务器。出现了什么错误?错误信息是什么?这很奇怪,因为我不是在脑子里发明这个代码的。这是我从一个完全工作的示例中复制粘贴的东西,我刚刚设置了这个示例。所以我猜你一定改变了什么。这是怎么一回事?您使用的是什么版本的框架?我注意到你用asp.net-mvc-2标记了你的问题,所以我更新了我的视图代码,因为最初我发布了一个Razor示例。现在更新了WebForms视图引擎示例。这是我的查询var query=from _context.tblRoles select _role.ToList;然后在查询{var role=new[]{new RoleID=roleItem.RoleID,RoleName=roleItem.RoleName};}中为每个var roleItem分配它然后错误是找不到隐式类型数组的最佳类型。为什么要编写所有这些代码LINQ和循环之类的东西?简单地说:Roles=new SelectListcontext.tblRoles、RoleID、RoleName在构建视图模型时直接创建。但我在单击“提交”时遇到一个问题,即它有一个错误对象引用未设置为对象的实例。在x.SelectedRoleId、Model.Roles、-Role-%>行中,我猜您没有在POST操作中分配Roles属性,就像在GET操作中那样。您认为DropDownList将从何处获取其项目?正如您所知,提交表单时,只有选定的值才会发送到服务器。