Je cette ViewModelChâteau Monorail Complexe Reliure
class ProductViewModel{
List<ProductSellingScopeViewModel> Scopes{get;set;}
string Name{get;set;}
int Id{get;set;}
}
class ProductSellingScopeViewModel{
int IdScope{get;set;}
decimal Price{get;set;}
}
class SellingScopeViewModel{
int Id{get;set;}
string Name{get;set;}
}
Pour créer/mettre à jour un produit que je vais avoir une case à cocher pour chaque SellingScopeViewModel (par exemple « site web « catalogue » ...) et l'utilisateur . sélectionnera les champs d'application dans la sorcière qu'il aimerait vendre le produit, et pour chaque champ, il va écrire un prix
J'ai essayé (seule la partie du prix) (NVelocity):
#set($checkBoxList = $FormHelper.CreateCheckboxList("product.Scopes", $Scopes,"%{text='Name',value='Id',sourceProperty='IdScope'}"))
#foreach($elem in $checkBoxList)
$checkBoxList.Item("$elem.Id") $Form.LabelFor("$elem.Id",$elem.Name)
#end
#foreach($aScope in $Scopes)
$FormHelper.LabelFor("product.Scopes[$velocityCount].Price","$aScope.Name")
$FormHelper.TextField("product.Scopes[$velocityCount].Price")
$FormHelper.HiddenField("product.Scopes[$velocityCount].IdScope")
#end
Pour créer un ap roduct il n'y a pas de problème. Mais pour la mise à jour d'un produit, le doublage ne fonctionne pas car $ product.Scopes ne peut pas être dans le même ordre que $ Scopes, ou $ product.Scopes peut ne pas être lié à chaque portée. Donc, je vais finir avec
Catalogue : |20$|
Call Center : |25$|
Web site : ||
Si mes objets sont comme ça
$ Scopes:
Id - Name
---------
1 - Catalogue
2 - Call Center
3 - Web Site
Et Product.Scopes
IdScope - Price
--------------
3 - 20$
1 - 25$
Je pensais que des
changement ProductViewModel.Scope dans un dictionnaire (et utilise l'identifiant de portée au lieu de $ velocityCount) mais je ne suis pas su re comment le cadre va réagir
. Ou ne pas utiliser le cadre pour montrer les valeurs de prix et traiter avec un assistant, mais c'est un peu lutter contre le cadre.
Qu'en pensez-vous?
EDIT: FormHelper Castle Monorail lancera une exception si je tente de créer un CheckBoxList avec mon Dictionnary ...
Il existe 2 boucles car la case à cocher et la zone de texte ne se trouvent pas dans le même bloc html. –