MVC 部分视图

本文关键字:视图 MVC | 更新日期: 2023-09-27 18:31:58

学习MVC,尽管取得了良好的基础,但对此感到困惑。

所以我从一个实体构建了一些 CRUD 基架对象。我修改了创建页面以包含一些下拉列表。我选择使用部分视图,一切都很好!

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

System.Web.Mvc 中发生了类型为"System.InvalidOperationException"的异常.dll但未在用户代码中处理
其他信息:传递到字典中的模型项类型为"FiveADayMVC2.Models.fad_userFoods",但此字典需要类型为"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,这将完美运行。其代码在结构上是相同的(但显然引用了相关的食物模型)。任何关于我做错了什么的指导将不胜感激。我意识到它读起来有点令人困惑,所以你还需要我做什么?

MVC 部分视图

我猜@Html.Partial("fad_mealTypeDdlPartial")调用的"编辑"视图,具有@model类型的"userFoods"。

但是你在没有传入视图模型的情况下做了一个@Html.Partial("fad_mealTypeDdlPartial")

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

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