gpt4 book ai didi

asp.net-mvc - 获取错误消息, 'There is no ViewData item with the key ' Reason' of type 'IEnumerable' for the DropDownList in asp.net mvc

转载 作者:行者123 更新时间:2023-12-04 06:35:01 28 4
gpt4 key购买 nike

我对 ASP.net 框架很陌生,如果有人能帮我弄清楚我在这里做错了什么,我将不胜感激。

我正在尝试使用 asp.net mvc 3.5 (C#) 从 SelectList 中为表字段“原因”创建下拉列表。

在我的 View 代码中,我使用了 MVC HTML 方法 Html.DropdownList:

<%= Html.DropDownList("Reason", Model.Reason)%>
<%= Html.ValidationMessage("Reason", "*")%>

在 Model 类中,我在代码中添加了“原因”列表:
namespace Appointments.Models
{
public class AppointmentFormViewModel
{
public Appointment Appointment { get; set; }
public Dictionary<string, string> ReasonValues
{
get
{
return new Dictionary<string, string>()
{
{ string.Empty, string.Empty },
{ "Add/Drop", "Add/Drop a Course" },
{ "Academic Diff.", "Academic Difficulty" },
{ "Academic Plan", "Academic Plan" },
{ "Other", "Other: Fill out below" }
};
}
}
public SelectList Reason { get; set; }

public AppointmentFormViewModel(Appointment appointment)
{
Appointment = appointment;
Reason = new SelectList(ReasonValues, "Key", "Value", appointment.Reason);
}

在 Controller 中的代码是:
public ActionResult Index()
{
ViewData["Reason"] = new SelectList("ReasonValues");
return View();
}

当我调试代码时,我收到一条错误消息,“没有包含键为“IEnumerable”的“原因”的 ViewData 项。

谢谢!

最佳答案

所以你有一个 Controller Action ,它返回一个 View ,但你没有将任何模型传递给这个 View :

return View();

然而,您正在尝试在您的 View 中使用 Model.Reason。那是不允许的。

因此,第一件事是让您的 Controller 操作将模型返回到 View :
public ActionResult Index()
{
Appointment appointment = ... // get an appointment from somewhere
// instantiate your view model
var model = new AppointmentFormViewModel(appointment);
// pass the view model to the view
return View(model);
}

第二件事是在您的 View 中使用强类型助手( DropDownListFor ),它使用标量类型属性作为第一个参数,该属性将包含下拉列表的选定值(这里假设 Appointment.Reason 是一个简单的属性类型,如 string ):
<%= Html.DropDownListFor(x => x.Appointment.Reason, Model.Reason, "-- Reason --") %>
<%= Html.ValidationMessageFor(x => x.Appointment.Reason, "*") %>

现在您可以删除 string.Empty 字典中的 ReasonValues 值,因为我们可以直接在 View 中指定它。

关于asp.net-mvc - 获取错误消息, 'There is no ViewData item with the key ' Reason' of type 'IEnumerable<SelectListItem>' for the DropDownList in asp.net mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974914/

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