如何防止视图将其模型传递给局部视图,而是传递null?

The*_*kis 9 asp.net-mvc razor

在ASP.NET MVC中并使用Razor,我有一个View(父)将另一个View(child)称为partial.两者都是强类型的,但它们具有不同的模型类型.

通常,在这些情况下,我们将模型从父视图显式传递给子视图.

@Html.Partial("Child", Model)
Run Code Online (Sandbox Code Playgroud)

我们也可以选择不明确指定要传递的Model,在这种情况下,父View将尝试将自己的Model传递给子View.如果类型匹配并且在大多数情况下是可取的,则这是有效的.

@Html.Partial("Child")
Run Code Online (Sandbox Code Playgroud)

但是,在我的情况下,我真的希望父视图不要尝试将任何内容传递给子视图.我该怎么办?

我想过尝试null明确传递:

@Html.Partial("Child", null)
Run Code Online (Sandbox Code Playgroud)

但是这仍然将父模型传递给子视图,导致错误: The model item passed into the dictionary is of type 'A', but this dictionary requires a model item of type 'B'.

(作为旁注,子视图是其模型的创建视图,这就是为什么我没有传递给它的实例.)

Max*_*oro 11

试试这个:

@Html.Partial("Child", null, new ViewDataDictionary<ChildType>(childInstance/*this can be null*/))
Run Code Online (Sandbox Code Playgroud)


Dmi*_*try 5

我理解你不想通过模型的原因是你的输入被清空了?如果是这种情况,您可以将新模型传递给此部分:

@Html.Partial("Child", new Model())
Run Code Online (Sandbox Code Playgroud)

由于模型是新的,因此不会填充任何值.