index.cshtml页面上的Create.cshtml?

时间:2016-10-05 09:22:15

标签: c# asp.net-mvc asp.net-mvc-4 razor

我使用.net渲染了一个CRUD,并在同一个文件夹中包含以下文件。

Create.cshtml,Delete.cshtml,Details.cshtml,Edit.cshtml,Index.cshtml

现在它是在索引页面上创建新记录的链接

@Html.ActionLink("Create New", "Create")

但我希望创建表单位于索引页面上。

我测试过使用PartialView(我不知道在index.cshtml中复制create.cshtml中的代码或使用两个文件是否更好但是我得到了同样的错误。)

将控制器中的return更改为return PartialView(board);

@Html.Partial("Create")

的视图

但是我得到了编译错误

  

传递到字典中的模型项是类型的   'System.Collections.Generic.List`1 [Klotterplank.Models.Board]',但是   这本词典需要一个类型的模型项   'Klotterplank.Models.Board'。

这是我在index.cshtml中使用的模型

@model IEnumerable<Klotterplank.Models.Board>

这是我在create.cshtml中使用的模型

@model Klotterplank.Models.Board

2 个答案:

答案 0 :(得分:0)

如果在具有不同模型的父页面中使用PartialView,则必须将不同的模型传递给Html Helper,如下所示:

@Html.Partial("Create", new Klotterplank.Models.Board())

答案 1 :(得分:0)

错误本身就说明了:When a partial view is instantiated, it gets a copy of the parent view’s ViewData dictionary。您的Create视图需要不同类型的数据,因此您可以像这样提供:

@Html.Partial("Create", viewModel)

viewModel可以等于Model.Fist()(例如,因为在Index视图中,您有一组电路板作为模型)。