Я это ViewModelзамок Монорельс комплекс Binding
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;}
}
Для создания/обновления продукта я буду иметь флажок для каждого SellingScopeViewModel (например «веб-сайт„ каталог“...), и пользователь . подберут области в ведьму он хотел бы, чтобы продать продукт, и для каждой области он будет писать цену
Я попытался это (только цена часть) (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
Для создания продукта t здесь нет проблем.
Но для обновления продукта биение не работает, потому что $ product.Scopes migh не может быть в том же порядке, что и $ Scopes или $ product.Scopes может не связываться с каждой областью. Так что я в конечном итоге с
Catalogue : |20$|
Call Center : |25$|
Web site : ||
Если мои объекты как этот
$ Скоупсом:
Id - Name
---------
1 - Catalogue
2 - Call Center
3 - Web Site
И Product.Scopes
IdScope - Price
--------------
3 - 20$
1 - 25$
Я думал
изменения ProductViewModel.Scopes в Dictionnary (и использовать идентификатор области вместо $ velocityCount), но я не уверен, как структура будет реагировать
. Или не используйте рамки для отображения цен и обратитесь к помощнику, но это своего рода борьба с каркасом.
Что вы думаете?
EDIT: FormHelper Замок монорельсовая дорога будет бросать исключение, если я пытаюсь создать CheckBoxList с моим Dictionnary ...
Существует 2 цикла, потому что флажок и текстовое поле находятся не в одном и том же блоке html. –