Html.Partielle pas rendu vue partielle
J'ai le code suivant dans une vue:
@if (SiteSession.SubPageHelper.DisplayType == DisplayType.List)
{
Html.Partial("_SubLandingPage_List");
}
else
{
Html.Partial("_SubLandingPage_Grid");
}
et dans les partiels, j'ai juste une boucle foreach comme ceci:
@foreach (Product product in SiteSession.SubPageHelper.PagedProducts)
{
some html code here
}
Où PagedProducts
est obtenu en faisant une .Take()
sur le cache de la liste des produits
Maintenant le code ci-dessus ne s'affiche pas mon paginé produits, mais si je change le partiel pour inclure le symbole enlever le point-virgule:
@Html.Partial("_SubLandingPage_Grid")
Il affichera les produits correctement. Quelqu'un peut-il me dire quelle est la différence entre les deux version sont aussi il m'a fallu âge de comprendre pourquoi les produits n'étaient pas afficher
OriginalL'auteur | 2014-06-27
Vous devez vous connecter pour publier un commentaire.
C'est en fait la syntaxe razor pour vous dire que nous sommes de commencer à écrire du code c#, si vos ne mettez pas @, il sera considéré comme texte brut si vous avez besoin de mettre @ signer avant d'écrire du code c# dans la vue et dans le html de la méthode d'assistance que vous n'avez pas besoin de mettre de point-virgule devant alors c'est la syntaxe razor pour écrire des aides de cette façon.
Par Exemple:
Lorsque vous écrivez:
la voie droite, c'est à dire que c'est un rasoir helper html et c# déclaration:
vous pouvez en savoir plus sur la syntaxe razor ICI
Quelques liens qui vous aideront à la compréhension de rasoir:
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
Mise à JOUR:
Une alternative peut être d'utiliser RenderPartial qui va travailler dans l'instruction if sans mettre @ signe:
Pour la compréhension de la Différence entre
Html.Partial
etHtml.RenderPartial
, visist ces liens:Html.Partielle vs Html.RenderPartial & Html.Action 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/
la syntaxe razor est de mettre
@
et le point-virgule n'est pas nécessaire à la fin de sa déclaration, vous devriez lire à propos de la syntaxe razor pour obtenir votre esprit clair comment l'utiliserAh ok, vous avez été près correct - il est encore considéré comme c# au lieu de texte brut comme il est dans la déclaration étant tel, vous devez utiliser
HTML.RenderPartial("_SubLandingPage_List");
. en mettant le@
en face en fait revenir à Rasoir, auquel cas laHTML.Partial
suffit à la rendre. Si vous modifiez votre réponse pour refléter cela, je vais l'accepterHtml.Partielle n'a pas de retour, vous avez la vue partielle dans la vue principale??
OriginalL'auteur Ehsan Sajjad
Bien tout simplement le symbole "@" indique Rasoir qu'il faut rendre quelque chose. @ Attendent toujours quelque chose à imprimer à partir du relevé.
Si vous ne souhaitez pas utiliser cette syntaxe, vous pouvez toujours effectuer le rendu du contenu avec des changements mineurs dans votre code dans la boucle .. regardez cette.
Html.RenderPartial
va écrire directement à flot et ne nécessite pas @.Même si vous essayez d'écrire quelque chose comme suit
Cela vous donnera une erreur comme @ attendre à quelque chose de retour et
Html.RenderPartial
retournevoid
@: @
avant de Html.Partielle appelOuais le problème peut être résolu par l'ajout de @. mais je suis juste en lui expliquant le comportement de "@" 🙂 et une autre solution pour l'ajout de connaissances .. parce que c'est pas un comportement bizarre de rasoir jusqu'à présent... Acclamations 😉
OriginalL'auteur K D