gpt4 book ai didi

asp.net-mvc - 带有 Entity Framework 的MVC下拉列表

转载 作者:行者123 更新时间:2023-12-04 13:59:54 25 4
gpt4 key购买 nike

我首先使用实体​​框架代码创建了一个 MVC 项目。我的模型只是一个收集信息的表格。

public class Application
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleInitial { get; set; }
public string LastName { get; set; }
public int SSN { get; set; }
public DateTime DOB { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State {get; set; }
public string Zip { get; set; }
public int HomePhone { get; set; }
public int BusinessPhone { get; set; }
public int MobilePhone { get; set; }

}

我的目标是创建一个包含所有状态的下拉列表,但我发现这非常困难,因为我已经通过带有 View 和 Controller 的脚手架创建了数据库。有没有一种简单的方法可以做到这一点并将其与现有数据库联系起来?我已经搜索了几乎一整天都没有运气。对模型/ Controller / View 包含的内容的概述/解释将是惊人的!

更新:我创建了一个名为“State”的新模型,其属性为“Id”和“StateName”,并在数据库中创建了一些状态。在我的 Create action 方法中的“应用程序” Controller 中,我有:

Controller
public ActionResult Create()
{

ApplicationDbContext db = new ApplicationDbContext();
this.ViewData["Id"] = new SelectList(db.States.ToList(), "Id", "StateName");
return View();
}

看法
@Html.DropDownList("Id")

现在的问题是我收到此错误“没有具有键 'Id' 的 'IEnumerable' 类型的 ViewData 项。”非常感谢帮助!

最佳答案

它很简单。添加 IEnumerable<SelectListItem>属性到您的模型(在这里我建议您制作一个 ViewModel,它可以具有与 Application 完全相同的属性,并将以下代码作为属性包含在内)。然后您只需要构建列表并将其发送到您的 View

public IEnumerable<SelectListItem> States{ get; set; }

我假设您想检索 State来自数据库的值。以下是您的操作方法:
private IEnumerable<SelectListItem> GetAllStates()
{
IEnumerable<SelectListItem> list = from s in db.Applications
select new SelectListItem
{
Selected = false,
Text = s.State,
Value = s.State
};
return list;
}

或这个...
private IEnumerable<SelectListItem> GetAllStates()
{
IEnumerable<SelectListItem> list = db.Applications.Select(s => new SelectListItem
{
Selected = false,
Text = s.State,
Value = s.State
});

return list;
}

然后在你的行动中做这样的事情:
var app = new Application
{
States = GetAllStates()
};

return View(app);

最后,在 View 上使用 Razor 来显示这样的下拉列表
@Html.DropDownListFor(m => m.State, Model.States, "--Select a State--")

第一个参数是要更新的模型的属性,第二个是数据列表,第三个是将显示的默认消息

希望这可以帮助。

关于asp.net-mvc - 带有 Entity Framework 的MVC下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26663068/

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