我有一个带有其他模型的外键的模型。从这个外键中,我想在我的表单中显示一个带有第二个模型名称的DropDownList。当我转到create.cshtml或edit.cshtml时,出现以下错误:
ArgumentNullException:值不能为null。
这是我的代码:
// Models
public class Timesheet
{
public Pharmacy Pharmacy { get; set; }
}
// Controllers / ame code on edit.cshtml.cs
public IActionResult OnGet()
{
Dictionary<int, string> pharmacies = new Dictionary<int, string>();
foreach (Pharmacy p in _context.Pharmacy)
pharmacies.Add(p.PharmacyID, p.Name);
ViewData["PharmacyID"] = pharmacies;
return Page();
}
进入create / edit.cshtml,HTML为:
@Html.DropDownListFor(model => model.ViewData["PharmacyID"], new SelectList(ViewBag.pharmacies , "key", "value"),"-- select --")
希望您能帮助我修复它:)
谢谢你!
答案 0 :(得分:0)
问题是您使用lambda表达式而不是具有值类型的模型属性并使用未分配的ViewData
绑定到ViewBag.pharmacies
,因此绑定无法按预期进行。
您应该首先创建模型属性:
[BindProperty]
public int PharmacyID { get; set; }
然后将其绑定到DropDownListFor
助手:
@Html.DropDownListFor(model => model.PharmacyID, new SelectList(ViewData["PharmacyID"], "Key", "Value"),"-- select --")
或使用<select>
标签助手:
// Page controller (cshtml.cs)
ViewData["PharmacyID"] = new SelectList(pharmacies, "Key", "Value");
<!-- CSHTML view -->
<select asp-for="PharmacyID" asp-items="@ViewData["PharmacyID"]" ...></select>