2011-07-05 6 views
1

내 모델에 대한 유효성 검사 메시지가있는 페이지에 문제가 있습니다.모델 미리 작성시 ASP.NET MVC 유효성 검사 문제

페이지는 검색을위한 양식을 가지고 있으며 모델은 양식의 항목을 나타내는 개체입니다. 사용자가 페이지를 방문하면 우편 번호가 컨트롤러에 자동으로 채워지고 모델이보기로 전달됩니다.

이렇게하면 우편 번호가 올바른 형식 임에도 불구하고 우편 번호 필드에 대한 유효성 확인 메시지가 표시됩니다. 다음과 같습니다

public ActionResult WhereToBuyIndex(LocatorSearch searchOptions) 
{ 
    if (searchOptions == null) 
    { 
     searchOptions = new LocatorSearch(); 
    } 

    //ATTEMPT TO GET USER ZIP CODE 
    AppLib.Geolocation.Web.WebGeolocationService geoService = new AppLib.Geolocation.Web.WebGeolocationService(); 
    searchOptions.Address = geoService.GeolocateToZipCode(Request.ServerVariables["REMOTE_ADDR"]); 
    if (searchOptions.Address == "00000") { searchOptions.Address = "90210"; } 

    ViewBag.Countries = LocatorService.Instance.LoadCountriesWithCustomers(); 

    return View("Index", searchOptions); 
} 

및 우편 필드를 포함하는 뷰에서 유일하게 라인 :

@Html.TextBoxFor(model => model.Address, new { id = "fAddress" }) 
<span class="failure">@Html.ValidationMessageFor(model => model.Address)</span> 

을 내가 다른 필드를 미리 기입하려고하면 다음

컨트롤러에 코드입니다 , 동일한 유효성 검사 문제가 발생합니다. 사전 입력 된 모든 필드 오류 메시지가 표시됩니다.

아무런 도움이 없으므로

감사합니다. 이 방법 서명을 사용하는 경우

답변

2

이 LocatorSearch의 기본 바인더는 함수의 모든 코드가 호출되기 전에 유효성 검사를 수행합니다 :

public ActionResult WhereToBuyIndex(LocatorSearch searchOptions) 

오류 주위에 몇 가지 방법이 있습니다, 하나는 [HttpPost를 사용하는 것 ] 속성을 사용하고 사용자가 아직 기본값을 채우지 않은 검색을 제출하지 않은 경우 인수가없는 속성을 사용하십시오.

다른 방법으로는 ModelState["Address"].Errors.Clear();을 사용하여 오류를 해결할 수 있습니다. 이는 다소 지저분한 솔루션입니다.

+0

감사합니다. 이것은 매력처럼 작동했습니다. 내 요구 사항 중 일부는이 페이지가 연결될 수 있도록 get 만 사용하므로 추악한 방식으로 처리해야했습니다. :( – jsmith

관련 문제