下拉列表- MVC3
本文关键字:MVC3 下拉列表 | 更新日期: 2023-09-27 18:10:32
我在ASP mvc中使用c#。我有两个表从SQL服务器。SQL Server 2008中的表名为SMS_User
和SMS_Division
。当我创建一个新用户时,我想要显示sms_division表中的分区id。
SMS_User
包含UserName
, DivisionID
, EmailAddress
SMS_Division
包含DivisionID
、DivisionName
。
控制器代码:
UserController : Controller
{
private NetPerfMonEntities2 db = new NetPerfMonEntities2();
IEnumerableZamZam= db.SMS_Division.Select(c => new SelectListItem { Value = c.divisionid.ToString(), Text = c.divisionid.ToString() } );
}
当我在user create () VIEW中创建一个新用户时,我想将一个DivisonName显示为下拉列表而不是文本框。怎么做呢?
@Html.DropDownListFor(model => model.divisionid, (IEnumerable<SelectListItem>) ViewData["Divisions"], "<--Select a divison-->")
@Html.ValidationMessageFor(model => model.divisionid)
我有这个错误信息:
CS0103: The name 'sms_amountlimit2' does not exist in the current context
我将在我的回答中假设你的问题的一些缺失部分,并给你一个通用的模式,在ASP中有一个工作的下拉列表。. NET MVC 3:
让我们从模型开始:
UserModel将是表示从sms_user
中提取的数据的类
public class UserModel
{
public string Username { get; set; }
public string EmailAddress { get; set; }
public int DivisionId { get; set; }
}
DivisionModel将是表示从sms_division
public class DivisionModel
{
public int DivisionId { get; set; }
public string DivisionName { get; set; }
}
这里的extract是指任何可以在实例化类中转换数据库中的数据的东西。它可以是ORM(实体框架或其他),或SQL查询等…
接下来是视图模型,因为在UserModel中插入IEnumerable划分是没有意义的,而且我个人在可以避免使用ViewData时并不喜欢使用它:
public class UserViewModel
{
public UserModel User { get; set; }
public IEnumerable<DivisionModel> Divisions {get; set;}
}
下一步,控制器:
public class UserController : Controller
{
public ActionResult Create()
{
List<DivisionModel> divisions = new List<DivisionModel>();
divisions.Add(new DivisionModel() { DivisionId = 1, DivisionName = "Division1" });
divisions.Add(new DivisionModel() { DivisionId = 2, DivisionName = "Division2" });
UserModel user = new UserModel() { Username = "testUser", EmailAddress = "testAddress@test.com" };
return View(new UserViewModel() { User = user, Divisions = divisions });
}
}
我只是创建了分部列表和用户,但是您可以通过使用的任何方式从数据库中获得它们。
最后是View:
@model ViewModels.UserViewModel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<p>
@Html.DropDownListFor(model => model.User.DivisionId, new SelectList(Model.Divisions, "DivisionId", "DivisionName"), "-- Select Division --")
@Html.ValidationMessageFor(model => model.User.DivisionId)
</p>
注意绑定到视图的模型是ViewModel。
在您的模型中添加一个部门集合,然后创建如下所示的下拉列表:
@Html.DropDownListFor(m => m.SelectedDivisionId,
new SelectList(Model.Divisions, "DivisionId", "DivisionName"),
"-- Select Division --")