我正在.NET Core MVC上的应用程序上工作,我想在创建视图中使用导航属性“ Hobbies”的名称而不是ID
我设法在控制器中使用该代码进行create动作:
public IActionResult Create()
{
ViewData["HobbiesName"] = new SelectList(_context.Set<Hobbies>(), "HobbiesName", "HobbiesName");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("PersonID,PersonName,PersonSurname,HobbiesID")] Person person)
{
if (ModelState.IsValid)
{
_context.Add(person);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["HobbieName"] = new SelectList(_context.Set<Hobbies>(), "HobbiesID", "HobbiesName", person.HobbiesID);
return View(person);
}
在视图中:
<div class="form-group">
<label asp-for="Hobbies.HobbiesName" class="control-label"></label>
<select asp-for="Hobbies.HobbiesName" class ="form-control" asp-items="ViewBag.HobbiesName"></select>
</div>
但这不起作用,因为我需要ID。 有人知道我该如何处理。我的想法不多了。
谢谢
答案 0 :(得分:0)
以下内容对我有用:
<select asp-for="Name" asp-items="@Model.NameList">
在我看来的模型:
public string Name { get; set; }
public SelectList NameList { get; set; }
使用视图模型最好避免使用ViewBag。 必不可少的是要有两个不同的字段:项目列表(其ID已经在后台,在后台),以及一个代表所选项目的文本(而非ID)的字段