데이터베이스에 산술 식을 저장하려고합니다. 나는 사용자에게 요청 페이지로 동적으로 컨트롤을 추가하여 피연산자와 연산자의 변수 번호 식을 만들 수있는 기능을 제공하려면, 내보기에동적 양식 컨트롤을 사용한 모델 바인딩
Expression
=======
id
name
Operand
=======
id
expressionId
value
side (indicates if the operand is on the left or right side of the expression)
idx (the index to identify the order of operands on each side)
Operator
========
id
expressionId
type
side
idx
:이 DB 구조를 가지고있다. 사용자가 "피연산자 추가"버튼을 클릭하면 javascript를 통해 연산자에 대한 드롭 다운이 생성되고 피연산자에 대한 텍스트 상자가 생성됩니다.
public class ExpressionCreateViewModel
{
IEnumerable<ExpressionOperator> Operators { get; set; }
IEnumerable<ExpressionOperand> Operands { get; set; }
Expression Expression { get; set; }
}
모델 바인더가 함께 작동합니다 :
public class ExpressionCreateViewModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var vm = new ExpressionCreateViewModel();
//Build it!
}
을 나는 의심 해요 무엇
내 생각은 행동을 만들고 뷰 모델로 작업 내 표현의 바인딩 사용자 정의 모델을 사용하는 것입니다 of은 동적으로 생성 된 컨트롤의 값을이 뷰 모델에 전달해야하는 방법입니다. 내가 그 일을 생각할 수있는 유일한 방법은 모든 세부 사항을 제공하는 컨트롤 ID 생성 (예 < 입력 유형 = "텍스트"ID = ": 1 개 $ 측 : 피연산자를 왼쪽">)
그리고 나는 구문 분석 할 수 양식 컬렉션의 항목 및 규칙에 따라 피연산자 및 연산자 개체를 작성합니다.
누구나 더 깨끗한 방법이 있습니까?
감사합니다.
크리스
재미있는 점은 내가 어디에서 예를 찾을 수 있었는지 알고 싶습니까? Google은 관련된 내용을 반환하지 않습니다. 감사! –
도움이 될 것이라고 생각하십시오. http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx –
Criminy! 컨트롤을 생성 할 때 기존 컨벤션을 따라하면됩니다. 환상적인 것들, 팁을 주셔서 너무 고마워, 나는이 건축술로 더 행복하다. –