0

내 asp.net mvc-4 웹 응용 프로그램 내에서 이상한 문제에 직면 오전 Html.Editor 나를 인도하는 방식으로 매우 현명한 것 같습니다 그것이 실제로 어떻게 작동하는지 혼란스러워하십시오. 지금 i는 다음과 같이, 나는이 부분 뷰를 렌더링 기본보기를 내보기, 내부에 다음과 같은있다 : - 여기어떻게 내 Html.Editor는 내 모델 내에서 제공되지 않습니다 그 가치를 얻을

@model TS.ViewModels.ServerJoin 
using (Html.BeginForm()) 
    { 
@Html.ValidationSummary(true) 
@Html.Partial("_PMCreateAccount",Model.createAccount.operation.Details.ACCOUNTLIST.ToList()) 
    } 

을하고하는 부분이다 : -

@model IList<TS.ViewModels.ACCOUNTLIST> 
for(int i2 = start; i2 < count ; i2++) { 

    <div> 

     <span class="f">@Html.DisplayName("["+i2.ToString()+"].ACCOUNTNAME") </span>@Html.Editor("["+i2.ToString()+"].ACCOUNTNAME") 


     <span class="f">@Html.DisplayName("["+i2.ToString()+"].PASSWORD") </span>@Html.Editor("["+i2.ToString()+"].PASSWORD") 
     <span class="f">@Html.DisplayName("["+i2.ToString()+"].NOTES") </span>@Html.Editor("["+i2.ToString()+"].NOTES") </div> 

    } 

과 사후 조치 방법은 다음과 같습니다 : -

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(ServerJoin sj,List<ACCOUNTLIST> al) 
    { 
     if(ModelState.IsValid) 
      { 
      } 
     return View(sj); 

    } 

지금은 다음 SJ & 알이 정확한 값을 얻을 것이다,보기를 제출 가정 해 봅시다 ..하지만 모델 상태 오류가 가시라고하자 에 다루지는 다음 내 주요보기는 지금 무엇을 나에게 혼란을 얻을하는 부분보기 내부의 Html.Editor 내 포스트 액션 메소드 내에서이 문제를 정의하지 않고 원래의 값을 읽을 수 있었다이다 .. 다시 렌더링됩니다 : -

sj.createAccount.operation.Details.ACCOUNTLIST = al; 

전 내 주요 내부보기 나는 부분보기로 다음과 같은 전달하고 의미 : -에 - 경우 뷰가 모델 유효성 검사 오류 후 렌더링

@Html.Partial("_PMCreateAccount",Model.createAccount.operation.Details.ACCOUNTLIST.ToList()) 

Model.createAccount.operation.Details.ACCOUNTLIST.ToList()이 비어있을 것입니다 ... 내가 생각했던 그 Html.Editor 것 내가이 값을 명시 적으로 지정하지 않으면 원래 값을 읽을 수 없습니다. 게시 조치 방법 : -

sj.createAccount.operation.Details.ACCOUNTLIST = al; 

그러나이 경우가 아닙니까? 그래서 아무도 내 조언을 수 있습니다 내 Html.Editor 비록 모델 유효성 검사 오류 후보기가 렌더링되면 주보기에서 전달되는 모델이 비어있을 것이지만 그들의 가치를 얻을 수있었습니다 ??

답변

1

아무런 문제가 없지만 ModelState의 내용은 무엇입니까? MVC는 ViewBag, ViewDataRequest과 같은 다양한 위치의 값을 ModelState으로 채 웁니다. 양식에 표시되는 내용은 실제로 모델에 설정된 것과 관계없이 ModelState에 설정된 것입니다.

+0

우선 순위는 무엇입니까 ... 이제는 HTML 헬퍼가 뷰에서 값을 게시하지 않는 한 항상 modelstate의 값을 사용한다는 것을 알고 있습니다.이 경우 값을 다른 뷰에서 표시합니다 장소 ..하지만 내 경우에는 명시 적으로 내 기본보기에서 모델을 내 부분보기로 전달하고 ,,, 모델은 accoutlist의 빈 컬렉션을 갖게되지만 Html.Editor는 여전히 올바른 값을 읽습니다! –

+0

더 나은 이해를 얻으려면 내 2 가지 질문에 대답 할 수 있습니다. 심지어 모델을 부분 뷰에 전달하더라도 부분 뷰 HTml.Editor는 여전히 포스트 데이터의 원래 값을 검사합니다. 두 번째 질문 .. Html.Editor, Html.EditorFor & Html.TextBox & Html.TextBoxFor를 포함한 HTML 도우미 내부의 동작입니까? 만약 내가 원시 HTML을 사용하는 뜻 그럼 다른 행동을 기대해야합니까? 감사합니다. –