预填模型时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);
}

并且视图中涉及zip字段的唯一行如下所示:

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

如果我尝试预先填充其他字段,则会出现相同的验证问题 - 显示所有预填写的字段错误消息

任何帮助是极大的赞赏,

谢谢。


当您使用此方法签名时,LocatorSearch的默认绑定器将在调用该函数中的任何代码之前执行验证:

public ActionResult WhereToBuyIndex(LocatorSearch searchOptions)

有几种解决错误的方法,一种是在此函数上使用[HttpPost]属性,并使用一个没有参数的用户,以便用户尚未提交搜索时填充缺省值。

或者,您可以使用ModelState["Address"].Errors.Clear();清除错误ModelState["Address"].Errors.Clear(); 这是一个更丑陋的解决方案。

链接地址: http://www.djcxy.com/p/30569.html

上一篇: ASP.NET MVC Validation Issues when prefilling Model

下一篇: ASP.Net MVC Error Validation