asp.net mvc - pass partiel modèle de données à vue partielle
Je souhaite construire une vue partielle qui obtient un modèle de colonne et de l'imprimer.
Quelque chose comme ça:
À la vue:
@model IEnumerable<products_comparison.Models.Product>
@{
ViewBag.Title = "Index";
var Brand = (from r in Model
select r.Brand).Distinct();
}
<h2>
Index</h2>
@Html.RenderPartial("_DisplayAttribute",Brand)
Et à la vue partielle:
<table>
<tr>
<th>
Brand
</th>
</tr>
@foreach (var row in Model)
{
<tr>
<td>
@Html.DisplayFor(r => row)
</td>
</tr>
}
</table>
Il y a quelques problèmes que je rencontre:
- Le compilateur ne marche pas me permettre d'envoyer Barnd à la vue partielle.
- Si vous regardez la vue partielle de code, vous verrez le mot de la Marque, qui est le nom de la colonne. Je ne souhaite codé en dur le mot "Marque" dans la vue partielle, au lieu de cela, je voudrais que le nom de la colonne sera là.
- Dans la vue partielle j'ai besoin de mettre @modèle products_comparison.Modèles.Produit, mais je n'ai pas
voulez envoyer le trou de la table. Je veux envoyer une seule colonne, Mais je ne sais pas quoi mettre là..
Merci!
EDIT:
Juste pour éclaircir une chose, je veux que le point de vue qui fera appel à la même vue partielle pour chaque colonne de la table(pour la plupart des colonnes dans la table de toute façon) et à chaque fois que je vais envoyer une autre colonne(distincte de la valeur de la colonne pour être exact).
OriginalL'auteur Nir | 2012-01-04
Vous devez vous connecter pour publier un commentaire.
Commencer par refactoring et de mettre le droit de la logique dans le bon endroit. Cette requête LINQ a strictement rien à faire dans une vue. Une vue n'est pas censé faire toute les requêtes LINQ, ou n'importe quoi d'extraire des données. Une vue est censé travailler avec les données qu'il est passé à partir du contrôleur de l'action sous la forme d'un modèle de vue. L'action d'un contrôleur construit et passe adaptation d'un modèle d'affichage que vous définissez pour la vue.
Donc, comme toujours, vous commencez par définir un modèle de vue qui sera adapté aux besoins de votre point de vue:
ensuite, vous écrivez l'action d'un contrôleur qui remplira ce modèle de vue et de passer à la vue:
une vue:
et enfin, vous pouvez définir un correspondant du modèle d'affichage qui sera automatiquement affiché pour chaque élément de la
Brands
collection de votre modèle de vue (~/Views/Shared/DisplayTemplates/Brand.cshtml
):dans ce cas, vous pouvez adapter votre modèle de vue, de sorte qu'il contient les colonnes et les lignes de la table.
Alors, comment ça deffer à partir du modèle lui-même?
cela va dépendre de la façon dont vous voulez présenter les informations sur le point de vue.
Que voulez-vous dire? Toute la colonne aura une table HTML de leur propre..
OriginalL'auteur Darin Dimitrov
Pour 1 essayez de changer
@Html.RenderPartial("_DisplayAttribute",Brand)
à@Html.Partial("_DisplayAttribute",Brand)
Vous devrez également spécifier le modèle dans la vue partielle comme
@model products_comparison.Models.Brand
ou quelque chose comme çaÉgalement préciser 2 & 3 car ils ne sont pas clair ce que vous voulez
Merci! Votre réponse est cool!
Il est généralement utile si vous l'Accepter", la réponse qui vous a aidé. (S'il vous plaît et Merci.)
OriginalL'auteur Alexandros B