gpt4 book ai didi

c# - 下拉列表 - MVC3

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:48 25 4
gpt4 key购买 nike

我在 ASP MVC3 中使用 C#。我有两个来自 SQL Server 的表。在 SQL Server 2008 中,表名称是 SMS_UserSMS_Division。当我创建一个新用户时,我想显示 sms_division 表中的部门 ID。

SMS_User 包含UserName, DivisionID, EmailAddress

SMS_Division 包含 DivisionIDDivisionName

Controller 代码:

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; }
}

Extracted 是指任何可以在实例化类中转换数据库中数据的东西。这可以是 ORM(EntityFramework 或其他)或 SQL 查询等...

接下来是 View 模型,因为在 UserModel 中插入一个 IEnumerable 分区是没有意义的,而且我个人不太喜欢在可以避免的情况下使用 ViewData :

public class UserViewModel
{
public UserModel User { get; set; }
public IEnumerable<DivisionModel> Divisions {get; set;}
}

接下来, Controller :

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>

请注意,绑定(bind)到 View 的模型是 ViewModel。

关于c# - 下拉列表 - MVC3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com