2012-04-02 77 views
1

我正在与剃刀MVC3第一次,我有一个局部视图,在许多其他地方使用,并没有模型。现在我需要它,我可以创建一个可选模型吗?如果它通过了,那么我会使用它,否则我会离开默认行为。剃刀 - 我可以制作视图的可选模型吗?

[更新]

我想调用它是这样的:

@Html.Partial("_myPartialView") 

或该:

@Html.Partial("_myPartialView", "Some string") 

(局部视图模型是一个字符串)

这可能吗?

回答

6
@model FooBar 
@if (Model != null) 
{ 
    <div>@Model.SomeProperty</div> 
} 
else 
{ 
    <div>No model passed</div> 
} 

UPDATE:

显示您所呼叫的部分的方式后,这里是你能做什么:

@Html.Partial("_myPartialView", null, new ViewDataDictionary()) 
@Html.Partial("_myPartialView", "Some string") 
+0

当没有模型通过我得到这个错误,即: '@ Html.Partial(“_ myPartialView”)' 传递到字典_The模型产品类型“ModelOfTheContainerView”,但这需要字典一个'PartialViewModel'类型的模型项目._ – kerzek 2012-04-02 07:39:06

+0

@kerzek,我已经更新了我的答案,以向您展示如何在不发生此异常的情况下使用空模型调用partial。您需要使用第三个参数和帮助器,并传递一个新的ViewDataDictionary以避免将父模型传递给部分。 – 2012-04-02 08:07:23

+0

谢谢。你是对的,如果我用两个参数调用它,然后采取父母的模型。我想我没有选择,我会用string.empty编辑所有的调用。 – kerzek 2012-04-02 08:16:59

0

可以在@Html.Partial("_myPartialView", null)

传递null然后您按照Darin的建议在视图中验证模型。

但最好的解决方案,即imo,将传递一个ViewModel对象到您的视图包含您需要的字符串属性。您将其设置为可扩展,并且不传入null,则传递一个具有空或空字符串的新ViewModel对象。

+0

我试过了,但如果我用第二个参数调用为null,那么局部就采用父类的模型。我需要第三个参数,或者,在这种情况下,一个string.empty。 – kerzek 2012-04-02 08:15:46