바인딩 내가 가진이 뷰 모델성 모노레일 단지가
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
ap 만들기 거기에 아무 문제도 없다.
그러나 제품을 업데이트 할 때 $ product.Scopes가 $ Scopes와 동일한 순서가 아니거나 $ product.Scopes가 모든 범위와 연결되지 않을 수 있으므로 bining이 작동하지 않습니다.
Id - Name
---------
1 - Catalogue
2 - Call Center
3 - Web Site
그리고 Product.Scopes이
IdScope - Price
--------------
3 - 20$
1 - 25$
내가
변화의 생각 : 내 개체가이
$ 스코프 같이 인 경우에 그래서
Catalogue : |20$|
Call Center : |25$|
Web site : ||
될 겁니다 ProductViewModel.Scopes를 Dictionnary에 추가하고 ($ velocityCount 대신 scope id를 사용) su가 아님 프레임 워크가 어떻게 반응할까요?
. 가격 값을 표시하고 도우미와 거래하기위한 프레임 워크를 사용하지 않거나 프레임 워크와 맞서 싸우는 것입니다.
당신은 어떻게 생각하십니까?
편집 : 내 사전도 함께 checkboxlist을 만들려고하면 성 모노레일의 FormHelper는
체크 상자와 텍스트 상자가 동일한 html 블록에 없기 때문에 2 개의 루프가 있습니다. –