C# 如何在多模型视图上使用DropdownListFor
我已经有一段时间没去看StackOverflow了 所以,我开始使用ASP.NETMVC4和Razor,使用模型优先的方法来创建实体框架。到目前为止,我很喜欢它,尽管我记不起某些东西 例如,现在我尝试实现一个简单的登录表单,它包括用户名+密码+用户类型。然而,正如我从MVC3的经历中回忆的那样,您不能传递两个模型。。。除非你使用元组 因此,我的目标是通过@HTML helpers创建表单,但我唯一无法使用的是DropdownListFor,它将显示用户类型列表并在表单中应用它们C# 如何在多模型视图上使用DropdownListFor,c#,entity-framework,asp.net-mvc-4,razor-2,C#,Entity Framework,Asp.net Mvc 4,Razor 2,我已经有一段时间没去看StackOverflow了 所以,我开始使用ASP.NETMVC4和Razor,使用模型优先的方法来创建实体框架。到目前为止,我很喜欢它,尽管我记不起某些东西 例如,现在我尝试实现一个简单的登录表单,它包括用户名+密码+用户类型。然而,正如我从MVC3的经历中回忆的那样,您不能传递两个模型。。。除非你使用元组 因此,我的目标是通过@HTML helpers创建表单,但我唯一无法使用的是DropdownListFor,它将显示用户类型列表并在表单中应用它们 @model T
@model Tuple<EMS_v1.User, EMS_v1.UserType>
@{
ViewBag.Title = "Log in";
}
<section id="loginForm">
<h2>Use a local account to log in.</h2>
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Log in Form</legend>
<ol>
<li>
@Html.Label(" User Name")
@Html.TextBoxFor(m => m.Item1.User_Name)
@Html.ValidationMessageFor(m => m.Item1.User_Name)
</li>
<li>
@Html.Label("Password")
@Html.PasswordFor(m => m.Item1.User_Pass)
@Html.ValidationMessageFor(m => m.Item1.User_Pass)
</li>
<li>
@Html.Label("Portal Access")
>>>>> @Html.DropDownListFor(model => model.Item2.Type_Id, new SelectList(Model.Item2, "Type_Id", "Description"));
</li>
</ol>
<input type="submit" value="Log in" />
</fieldset>
}
</section>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
@模型元组
@{
ViewBag.Title=“登录”;
}
使用本地帐户登录。
@使用(Html.BeginForm(new{ReturnUrl=ViewBag.ReturnUrl})){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
登录表格
@Html.Label(“用户名”)
@Html.TextBoxFor(m=>m.Item1.User\u Name)
@Html.ValidationMessageFor(m=>m.Item1.User\u Name)
@Html.Label(“密码”)
@Html.PasswordFor(m=>m.Item1.User\u Pass)
@Html.ValidationMessageFor(m=>m.Item1.User\u Pass)
@Html.Label(“门户访问”)
>>>>>@Html.DropDownListFor(model=>model.Item2.Type_Id,新的SelectList(model.Item2,“Type_Id”,“Description”);
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
}
我的实体框架模型包括UserType(int-Type\u-Id,String-Description)和User(int-Id,String-User\u-Name,String-User\u-Pass,UserTypeType\u-Id),UserTypeType\u-Id是指回UserType表的外键
有没有办法从UserType表生成list或IEnumerable?因为我确信我发布的代码不能正常工作。在controller的操作方法中创建一个集合,并将其分配给某个Viewbag属性 例如 ViewBag.UserType=新建SelectList() 此集合应为IEnumerable类型对象 现在从视图中使用此ViewBag项目 e、 g。
@Html.DropDownList(“UserType”,“Select User Type”)您真的不应该在视图中使用实体框架实体。创建视图模型,例如:
public class LoginViewModel
{
public string Username{get;set;}
public string Password{get;set;}
public int UserTypeId{get;set;}
public IEnumerable<UserTypes> UserTypes{get;set;}
}
问题不在于在视图上使用或实例化模型,而在于需要处理数据。无论如何谢谢你!视图:public ActionResult Index(){var context=new EMS_v1.emsmodelcainer();var query=from c in context.UserTypes选择c;var customers=query.ToList().AsEnumerable();ViewBag.UserTypes=customers;return View();}
@Html.DropDownListFor(m => m.UserTypeId, Model.UserTypes.Select(t => new SelectListItem { Value = t.TypeId.ToString(), Text = t.Description }));