MVC 局部视图

MVC partial view

正在学习 MVC,尽管打下了良好的基础,但对这一点感到困惑。

所以我从一个实体构建了一些 CRUD 脚手架对象。我修改的创建页面包含一些下拉列表。我选择使用局部视图,一切正常!

现在我来到了功能的编辑部分。使用我在创建时使用的相同局部视图,出现以下错误:

An exception of type 'System.InvalidOperationException' occurred in System.Web.Mvc.dll but was not handled in user code.
Additional information: The model item passed into the dictionary is of type 'FiveADayMVC2.Models.fad_userFoods', but this dictionary requires a model item of type 'FiveADayMVC2.Models.fad_mealType'.

详情:我的代码在这里失败

@Html.Partial("fad_mealTypeDdlPartial")

它位于名为 edit.cshtml 的视图中。 fad_mealTypeDdlPartial.cshtml 包括

@model FiveADayMVC2.Models.fad_mealType
@Html.DropDownListFor(Model => Model.mealTypeID, ViewBag.mealTypeItems as IEnumerable<SelectListItem>, "Select Meal Type.............")

我的模型看起来是这样的:

public partial class fad_mealType
{
    public int mealTypeID { get; set; }
    public string mealTypeName { get; set; }
}

正如我所说,它遍历所有代码以使用正确的项目列表填充 ViewBag。渲染视图时只是失败。一个额外的困惑是我在页面上有另一个食品下拉列表,如果我删除膳食类型 ddl,这将非常有效。此代码在结构上是相同的(但显然引用了相关的食物模型)。任何关于我做错了什么的指导将不胜感激。我意识到它读起来有点混乱,所以你还需要我做什么?

我猜 "edit" 查看 @Html.Partial("fad_mealTypeDdlPartial") 调用已开启,@model 类型为 "userFoods"。

但是您在执行 @Html.Partial("fad_mealTypeDdlPartial") 时没有为视图传递模型。

要么使用Html.Action("SomeActionThatReturnsAPartialWithModel"),要么在使用@Html.Partial("fad_mealTypeDdlPartial", SOMEMEALTYPEMODEL)时传入一个模型

@Html.Action() 在您的控制器中运行一个操作,然后可以 return 视图。