문제

우리 모두가 알고 있듯이 RenderAction() 다음 중 하나입니다.

  • ASP.NET MVC 1 선물 또는
  • ASP.NET MVC 2 베타 2

그리고 다른보기 또는 부분보기 내에서 작업 결과를 렌더링 할 수 있습니다.

설명

  1. 당신은 RenderAction() 돕는 사람.
  2. 적어도 두 개의 부분보기 렌더링 a <form> 아마 사용함으로써 Html.BeginForm() 그 포스트 백 오리지널보기.
  3. 포스트 백 아니다 Ajax 호출을 통해 수행됩니다
  4. 포스트 백 데이터는 양식 게시물에서 검증됩니다.

문제

양식 중 하나가 다시 게시되면 다른 하나는 다음과 같이 렌더링합니다. 유효하지 않은.

이 패턴을 사용하고 해결 한 사람이 있습니까? 우리는 어떻게 든 무엇을 알아야하는지 알아야합니다 form PostBack을 수행하면 게시물 데이터를 검증해야합니다. 다른 사람들은 검증을 무시하거나 정기적으로 수행해야합니다 HttpVerb.Get 액션 처리.

도움이 되었습니까?

해결책

어떤 것을 나타내는 형태로 숨겨진 필드를 가지고 있는지. 또는 접두사가 부분에 전달되어 양식의 각 요소에 추가되었습니다.

접두사에 대해. 첫 번째 방법은 html.renderpartial ( "partial", model.data1/2.withprefix ( "data1"))를 호출하는 두 가지 속성을 갖는 것입니다.

public class FormModel
{
   public string Prefix { get; set; }
}

public class FormData
{
   public FormModel Data1 { get; set; }
   public FormModel Data2 { get; set; }
}

public ActionResult HandlePost(FormData data)
{
   if (data.Data1 != null) {} else {}
}

두 번째 방법은 동일하지만 두 가지 동작 매개 변수를 사용합니다.

public ActionResult HandlePost(FormModel data1, FormModel data2)
{
   if (data1 != null) {} else {}
}

부분적으로 당신은합니다

<%= Html.TextBox(Model.Prefix + ".FormModelField", Model.FormModelField) %>

즉, 모델에서 접두사가 전달 된 필드 이름을 설정합니다.

물론 당신은 이것을 세부 사항에 따라 다를 수 있습니다.

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