gpt4 book ai didi

c# - EF 4.1 + MVC 下拉列表问题

转载 作者:行者123 更新时间:2023-11-30 22:34:30 25 4
gpt4 key购买 nike

所以首先我尝试像这样创建 ViewData["whatever"] 对象

ViewData["Blah"] = new selectList("Do cool stuff");

这导致了一个错误,说 int32 不是一个 IEnummerable(没有废话);

然后我尝试了另一种方法

List<SelectItem> coolList  = db.Select(new selectItem("bunch of cool stuff"));

ViewData["Blah"] = coolLost;

这导致了一个永远不会改变的 selectedIndex。

现在是我最后的尝试。

我已将 ICollections 添加到我的模型中。添加了 collectionId。

例如

public class Horse
{
public int Id { get; set; }
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "Gender is required")]
public int? GenderId { get; set; }
public string Color { get; set; }
public int? LegTypeId { get; set; }
public int? CharacterId { get; set; }
public int Hearts { get; set; }
public bool Retired { get; set; }
// Parents
public int? SireId { get; set; }
public int? DamId { get; set; }
// Internals
public int Stamina { get; set; }
public int Speed { get; set; }
public int Sharp { get; set; }
// Special
public int Dirt { get; set; }
// Externals
public int Start { get; set; }
public int Corner { get; set; }
public int OutOfTheBox { get; set; }
public int Competing { get; set; }
public int Tenacious { get; set; }
public int Spurt { get; set; }
//Genders
public virtual ICollection<Gender> Genders { get; set; }
//LegTypes
public virtual ICollection<LegType> LegTypes { get; set; }
//Characters
public virtual ICollection<Character> Characters { get; set; }
//Dams
public virtual ICollection<Horse> Dams { get; set; }
//Sires
public virtual ICollection<Horse> Sires { get; set; }
//Races
public virtual ICollection<Race> RaceResults { get; set; }
//Training
public virtual ICollection<Training> TrainingResults { get; set; }
}

在我的 cshtml 文件中。

   <div class="editor-label">
@Html.LabelFor(horse => horse.GenderId)
</div>
<div class="editor-field">

@Html.DropDownListFor(horse => horse.GenderId, new SelectList(Model.Genders, "Id", "Name", Model.GenderId), "-- Fill Out --")
@Html.ValidationMessageFor(horse => horse.GenderId)
</div>

这只是给我一个错误,说我有一个空引用。

我太没脑子了。

还有一个更好的模型,您可以在我的模型中看到。我有一份父亲名单和一份母亲名单。

但他们都是马型。我如何设法让我的所有马匹进入该列表。

提前感谢任何会触发我头脑中的灯泡的建议。

现在也在尝试这个:

var genders = horseTracker.Genders.Select(g => new SelectListItem { Text = g.Name, Value = g.Id.ToString() }).ToList();
var legtypes = horseTracker.LegTypes.Select(l => new SelectListItem { Text = l.Name, Value = l.Id.ToString() }).ToList();
var characters = horseTracker.Characters.Select(c => new SelectListItem { Text = c.Name, Value = c.Id.ToString() }).ToList();
var sires = horseTracker.Horses.Where(h => h.Gender.Equals("Male") && h.Retired.Equals(true)).Select(h => new SelectListItem { Text = h.Name, Value = h.Id.ToString() }).ToList();
var dams = horseTracker.Horses.Where(h => h.Gender.Equals("Female") && h.Retired.Equals(true)).Select(h => new SelectListItem { Text = h.Name, Value = h.Id.ToString() }).ToList();

ViewData["Genders"] = genders;
ViewData["LegTypes"] = legtypes;
ViewData["Characters"] = characters;
ViewData["Sires"] = sires;
ViewData["Dams"] = dams;

这给了我一个错误,说 LinQ 显然不能使用 toString(),因为这是一种不安全的方法。

最佳答案

 public ActionResult Create()
{
ViewData["Genders"] = new SelectList(horseTracker.Genders, "Id", "Name");
ViewData["LegTypes"] = new SelectList(horseTracker.LegTypes, "Id", "Name");
ViewData["Characters"] = new SelectList(horseTracker.Characters, "Id", "Name");
ViewData["Sires"] = new SelectList(horseTracker.Horses.Where(h => h.Gender.Name.Equals("Male") && h.Retired.Equals(true)), "Id", "Name");
ViewData["Dams"] = new SelectList(horseTracker.Horses.Where(h => h.Gender.Name.Equals("Female") && h.Retired.Equals(true)), "Id", "Name");

return View();
}

<div class="editor-label">
@Html.LabelFor(horse => horse.GenderId)
</div>
<div class="editor-field">

@Html.DropDownList("Id", (SelectList)ViewData["Genders"])

@Html.ValidationMessageFor(horse => horse.GenderId)
</div>

让页面运行并填充。但在创造马。所选值 = null。

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

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