2014-09-07 3 views
1

텍스트 상자를 표시하고 값을 ViewBag.SearchText로 설정하기 위해 다음과 같은 html 도우미가있는보기 용으로 Razor Engine과 함께 MVC5 ASP.Net을 사용하고 있습니다.Html.Textbox 도우미가 MVC5의 텍스트 상자 값을 설정하지 않습니다. 면도기

사용자가이 텍스트 상자에 텍스트를 입력하고 게시물을 다시 볼 때 값은 ViewBag.SearchText의 값에 따라 올바르게 설정되지만 컨트롤러의 작업에서 ViewBag.SearchText = string.Empty 일 때 텍스트 상자는 여전히 원본을 유지합니다 값이 빈 문자열이 아닌.

텍스트 상자의 Html 도우미가 어떻게 동작해야합니까? 아니면 뭔가 빠졌는데 어떻게 텍스트 상자의 값을 빈 문자열로 설정할 수 있습니까? 나는 Visual Studio에서 코드를 단계별로 때 ViewBag.SearchText 값이 빈 문자열이기 때문에이 매우 이상하다 2013 년

@Html.TextBox("SearchText", (string)ViewBag.SearchText) 

는 UPDATE 1 :

내가 발견 코드를 사용하여 Model.Clear()가이 문제를 해결했습니다. 그러나, 나는 다시 게시 후 텍스트 상자를 채우는 데 사용되는 ModelState의 일부만을 지우는 다른 방법을 발견했습니다. ModelState의 키는 텍스트 상자의 ID이며 'SearchText'입니다. 코드는 다음과 같습니다.

ModelState.SetModelValue("SearchText", new ValueProviderResult(null,string.Empty, 
          System.Globalization.CultureInfo.InvariantCulture)); 
+1

모델이 무엇입니까? 속성'string SearchText'를 가지고 있습니까? –

+0

아니요. 텍스트 상자는 어떤 모델에도 묶여 있지 않습니다. – Sunil

+1

게시 후보기를 반환 할 때 이런 일이 발생 했습니까? –

답변

1

기본적으로 (ModelState은 게시 백의 값을 유지함).

을 설정하고보기를 반환하기 전에 ModelState.Clear()을 사용할 수 있습니다. 그러나 유효성 검사를 사용하는 경우 ModelState을 지우면 예기치 않은 결과가 발생할 수 있으므로주의해서 사용해야합니다.

+0

ModelState를 지울 때 항상 클라이언트 측 유효성 검사 대신 서버 측 유효성 검사를 사용하여이를 극복 할 수 있습니까? – Sunil

+0

@Sunil,'ModelState.Clear();'도 오류를 없애기 때문에'ModelState.IsValid()'가 지워지기 전에 반드시 확인해야합니다. –

+0

텍스트 상자를 채우는 데 사용되는 ModelState에서만 해당 항목을 지우는 방법을 찾았습니다. 이 코드는 내 게시물의 업데이트 1에 있습니다. – Sunil