下拉列表- MVC3

本文关键字:MVC3 下拉列表 | 更新日期: 2023-09-27 18:10:32

我在ASP mvc中使用c#。我有两个表从SQL服务器。SQL Server 2008中的表名为SMS_UserSMS_Division。当我创建一个新用户时,我想要显示sms_division表中的分区id。

SMS_User包含UserName, DivisionID, EmailAddress

SMS_Division包含DivisionIDDivisionName

控制器代码:

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

下拉列表- MVC3

我将在我的回答中假设你的问题的一些缺失部分,并给你一个通用的模式,在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 --")