EditorFor () pour une liste de type complexe (MVC)
Je suis en train de créer un EditorFor() pour une Liste d'un Type Complexe. Plus précisément les "Options" ci-dessous devrait s'affichent dans un multitext d'entrée où chaque option(chaîne de caractères) est dans une nouvelle ligne. Cependant, je ne peut afficher qu'une option dans la zone de texte et pas toutes les options....
Mon point de Vue, le Modèle et la Classe:
public class ItemViewModel
{
public int itemId { get; set; }
[UIHint("Option")]
public List<Option> Options { get; set; }
}
public class Option
{
public string Text { get; set; }
}
Mon Éditeur De Modèles:
EditorTemplates\Item.cshtml
@model ItemViewModel
@Html.EditorFor(model => model.Options)
EditorTemplates\Option.cshtml
//Not sure how to dispay the options here
<textarea rows="4" cols="50">
Display Options
</textarea>
Si je mettre à jour mon EditorTemplates:
EditorTemplates\Item.cshtml
@model ItemViewModel
@Html.EditorFor(model => model.Options[0])
EditorTemplates\Option.cshtml
@Html.TextBoxFor(x => x.OptionText)
Il affiche la première option dans la zone de texte. Mais, encore une fois ce que je suis en train de réaliser est pour afficher toutes les options dans un multitext d'entrée.
Des idées?
source d'informationauteur piris
Vous devez vous connecter pour publier un commentaire.
Vous près de l'avoir.
Dans ce
EditorTemplates\Option.cshtml
ajouter les éléments suivants:Puis l'appeler dans votre vue comme:
Si vous n'êtes pas lors du remplissage de vos options sur l'obtenez, vous aurez besoin d'ajouter ceci dans votre ItemViewModel classe:
Ce constructeur initialise la collection:
Il suffit de créer une vue dans
Shared/EditorTemplates/Option.cshtml
Et appel
EditorFor parcourt collection pour vous.
Je suis tombé sur le même problème et j'ai la solution mais un peu similaire avec hutchonoid.
Donc, la première partie est même, de modifier l'Option.cshtml comme suit:
Et au Point.cshtml, j'appelle l'Option.cshtml à l'aide de Html.Partielle, comme suit:
Et dans mon cas, je n'ai pas à modifier le ItemViewModel classe.
Espérons que cela peut être l'alternative la réponse à ce problème.
Cheers!
À l'aide de @hutchonoid's réponse, vous devriez appeler le modèle dans la vue:
au lieu de
et s'il vous plaît noter, la
Option.cshtml
modèle est enViews\Item\EditorTemplates\Option.cshtml
ouView\Shared\EditorTemplates\Option.cshtml