문제

텍스트 필드에서 이름 지정 대상을 사용하여 컨트롤러에 다시 게시되면 컨텐츠로 수행해야 할 작업을 표시하는 모습이 있습니다.

형식은 다음과 유사합니다.

<input type="text" name="RegistrationLine#ID" />업데이트

<input type="text" name="CreateRegistrationLine#LineNumber" /> 생성을 위해

이제이 이름 지정 대상을 사용하고 있기 때문에 일반 모델 바인딩은 불가능합니다. 그러나 나는 주제에 대해 조금 읽었으며 사용자 정의 모델 바인더를 쓸 수 있다는 증거를 찾았으며, 이는 이러한 양식 요소를 구문 분석하고 바인딩하고 객체를 올바르게 인스턴스화하는 데 도움이 될 수 있어야합니다.

읽어주세요: FormValue 바인딩 다른 이름 인 ASP.NET MVC의 속성에 바인딩

이것은 내가하고있는 것과 약간 유사합니다. 제가 묶는 형식의 이름에 추가 된 정보가 추가 된 추가 복잡성이 있습니다.

내가 여기서 기지에서 벗어나? 그렇지 않다면,이 모델 바인더를 시작하는 방법을 보여주기 위해 몇 줄의 코드를 떨어 뜨릴 수 있습니까?

이것이 내가 실제로 달성하려는 것에 대한 매우 나쁜 접근법이라면, 더 나은 접근 방식에 대한 제안을 듣고 싶습니다. 내가 할 수있는 것은 두 업데이트와 한 번에 다시 게시하는 것입니다.

도움이 되었습니까?

해결책

@jfar 및 @omar에 동의해야합니다. 커스텀 모델 바인더 가이 인스턴스에서 원하는 곳이라고 생각하지 않습니다.

당신은 당신의 시야에 복잡한 유형을 전달하고 언급 한 @jfar와 같이 전체 정지를 사용할 수 있습니다.

id="Model.Person.Name.FirstName" FirstName이라는 속성이있는 이름이라는 클래스가있는 사람이라는 이름의 사람에게 행복하게 바인딩됩니다.

이제 데이터에 대해 특별한 검사를하려면 유효성 검사 등을 수행하고 ModelSTate 오류를 채우는 부분 클래스를 구현할 수 있습니다.

public partial class Name
{
  public void Validate(){ }
  public int CreateRegistrationLine(){ }
  public bool DoSpecialActions(){ }
}

당신의 특별한 행동이 무엇을하고 있는지는 불분명합니다. 그래서 위의 예는 당신이 원하는 것이 아닐 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top