Html-Code.Teilweise nicht gerendert Teilansicht
Ich habe den folgenden code in einer Ansicht:
@if (SiteSession.SubPageHelper.DisplayType == DisplayType.List)
{
Html.Partial("_SubLandingPage_List");
}
else
{
Html.Partial("_SubLandingPage_Grid");
}
und innerhalb des partials ich habe nur eine foreach-Schleife wie diese:
@foreach (Product product in SiteSession.SubPageHelper.PagedProducts)
{
some html code here
}
Wo PagedProducts
ist dabei ein .Take()
auf einer zwischengespeicherten Liste von Produkten
Nun den oben genannten code nicht angezeigt, meine ausgelagerten Produkte, aber wenn ich die teilweise auf das symbol entfernen Sie das Semikolon:
@Html.Partial("_SubLandingPage_Grid")
Es werden die Produkte angezeigt, richtig. Kann mir jemand sagen, was der Unterschied zwischen den beiden version sind, wie es nahm mich Alter, um herauszufinden, warum die Produkte nicht anzeigen
InformationsquelleAutor | 2014-06-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eigentlich razor-syntax zu sagen, dass wir anfangen zu schreiben, der c# code, wenn Ihr nicht setzen @ wird Sie als Klartext, so müssen Sie @ Zeichen vor dem schreiben von c# - code in der Ansicht und in der html-helper-Methode, die Sie nicht brauchen, zu setzen, Semikolon, dann ist es die razor-syntax zu schreiben, die Helfer auf diese Weise.
Beispiel:
Wenn Sie schreiben:
der richtige Weg ist zu sagen, dass dies ein Rasiermesser html-helper-und c# - Anweisung:
können Sie sehen mehr auf die razor-syntax HIER
Paar weitere links, die Ihnen helfen wird, das Verständnis razor:
http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax
http://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax
http://weblogs.asp.net/scottgu/introducing-razor
UPDATE:
Alternative sein kann, um zu verwenden RenderPartial die Arbeit wird in der if-Anweisung ohne @ Zeichen:
Für das Verständnis der Unterschied zwischen
Html.Partial
undHtml.RenderPartial
, visist diese links gilt:Html-Code.Teilweise vs Html.RenderPartial & Html.Aktion vs Html.RenderAction
http://dotnethelpers.wordpress.com/2013/06/18/difference-between-html-renderpartial-vs-html-partial-and-html-renderaction-vs-html-action-in-mvc/
http://www.em64t.net/2010/12/razor-html-renderpartial-vs-html-partial-html-renderaction-vs-html-action-what-one-should-use/
die razor-syntax ist
@
und Semikolon ist nicht erforderlich, am Ende Ihrer Erklärung, die Sie Lesen sollten, über die razor-syntax, um Ihren Verstand klar, wie es zu benutzenAh okay, du warst fast richtig - es ist immer noch als c# anstelle von normalem text innerhalb der if-Anweisung als solche, die Sie verwenden müssen
HTML.RenderPartial("_SubLandingPage_List");
. indem die@
vorn macht es kommen zurück zu Razor, in dem Fall dieHTML.Partial
ist genug zu machen. Wenn Sie Ihre Antwort zu reflektieren, werde ich es annehmenHtml-Code.Teilweise nicht zurück, Sie die teilweise Ansicht im Hauptfenster??
InformationsquelleAutor Ehsan Sajjad
Sowie einfach das " @ " - symbol weist Gestochen, dass es zu machen etwas. Das @ immer erwarten, dass etwas drucken von der mitgelieferten Anweisung.
Wenn Sie nicht möchten, verwenden Sie die folgende syntax können Sie noch das Rendern des content mit geringfügigen änderungen in Ihrem code im loop .. schau dir das an.
Html.RenderPartial
wird, schreiben Sie direkt zu streamen und nicht erfordert,@.Auch wenn Sie versuchen, etwas zu schreiben, die wie folgt
Dadurch erhalten Sie eine Fehlermeldung als @ erwarten, dass etwas zurück und
Html.RenderPartial
zurückvoid
@: @
vor Html.Teilweise rufenJa das problem kann gelöst werden, durch hinzufügen von @. aber ich bin einfach zu erklären, ihm das Verhalten des "@" 🙂 und eine andere Lösung für mehr wissen .., da ist es nicht ein komisches Verhalten von razor soweit... Cheers 😉
InformationsquelleAutor K D