2012-04-02 16 views
1

Ich arbeite zum ersten Mal mit MVC3 mit Razor, und ich habe eine Teilansicht, die an vielen anderen Orten verwendet wird und kein Modell hat. Und jetzt brauche ich es, kann ich ein optionales Modell erstellen? Wenn es übergeben wird, werde ich es verwenden, ansonsten belasse ich das Standardverhalten.Razor - Kann ich ein optionales Modell für eine Ansicht erstellen?

[Update]

Ich mag würde es so nennen:

@Html.Partial("_myPartialView") 

oder dies:

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

(die Teilansicht Modell ist ein String)

Ist das möglich?

Antwort

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

UPDATE:

Nach zeigt die Art und Weise Sie Ihre Teil anrufen, ist hier, was Sie tun können:

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

Ich erhalte diese Störung, wenn kein Modell übergeben wird, das heißt: '@ Html.Partial („_ myPartialView“)' _Die Modellelement in das Wörterbuch übergeben ist vom Typ ‚ModelOfTheContainerView‘, aber dieses Wörterbuch erfordert ein Modellelement des Typs 'PartialViewModel' ._ – kerzek

+0

@kerzek, Ich habe meine Antwort aktualisiert, um Ihnen zu zeigen, wie Sie das partielle mit einem Nullmodell aufrufen können, ohne diese Ausnahme zu erhalten. Sie müssen das 3. Argument und den Helfer verwenden und ein neues ViewDataDictionary übergeben, um zu vermeiden, dass das Elternmodell an den Partiellen übergeben wird. –

+0

danke. Du hast Recht, wenn ich es mit zwei Parametern anrufe, dann nimm das Modell des Elternteils. Ich denke, ich habe keine Wahl, ich werde alle Anrufe mit einer string.empty stattdessen bearbeiten. – kerzek

0

Sie können in @Html.Partial("_myPartialView", null)

null Dann passieren Sie validieren das Modell in der Ansicht wie von Darin vorgeschlagen.

Aber die beste Lösung, Imo, wäre, ein ViewModel-Objekt an Ihre Ansicht zu übergeben, die die von Ihnen benötigte String-Eigenschaft enthält. Wenn Sie es erweiterbar machen und keine Null übergeben, übergeben Sie ein neues ViewModel-Objekt mit einer leeren oder Null-Zeichenfolge.

+0

Ich habe es versucht, aber wenn ich mit dem zweiten Parameter als null aufrufen, dann nehmen die Teilnehmenden das Modell des Elternteils. Ich brauche den dritten Parameter oder in diesem Fall eine string.empty. – kerzek

Verwandte Themen