0

我在验证视图上的表单时遇到了困难。

我有一个控制器,UpdateModel(object);因此不确定如何构建验证。

我已经[Required(ErrorMessage = "Please enter a contact name")]为所有强制属性添加了。

我如何让这一切正常工作?因为我的控制器正在做一些复杂的事情。下面是控制器代码:

        [HttpPost]
    public ActionResult PersistListing()
    {
        var listingView = new MaintainListingView();

        if (!string.IsNullOrEmpty(Request["Listing.Guid"]))
        {
            var dbListing = _service.GetByGuid<Listing>(Guid.Parse(Request["Listing.Guid"]));

            if (dbListing != null)
            {
                listingView.Listing = dbListing;
            }
        }

        UpdateModel(listingView);    
        RebindTranslationsDictionary(listingView.Listing);
        listingView.Listing.CategoryId = _service.GetByGuid<ListingCategory>(listingView.SelectedListingCategoryGuid).Id;
        _service.PersistEntity(listingView.Listing);
        return RedirectToAction("Edit", new { id = listingView.Listing.Guid });

    }

当我取消注释基本模型上的必需属性时,当我尝试更新模型()时出现错误;

任何人都可以快速解决这个问题吗?

编辑:我正在使用我正在使用Html.TextBoxFor()在视图上创建控件。

添加了 TryUpdateModel 但不确定如何使用填充的错误消息重定向用户:

     if (TryUpdateModel(listingView))
        {

            RebindTranslationsDictionary(listingView.Listing);

            listingView.Listing.CategoryId =
                _service.GetByGuid<ListingCategory>(listingView.SelectedListingCategoryGuid).Id;


            _service.PersistEntity(listingView.Listing); //save the ting


            return RedirectToAction("Edit", new {id = listingView.Listing.Guid});
          }

我的视图中是否需要 EditForModel 标记?

4

1 回答 1

1

您可以使用TryUpdateModel代替,UpdateModel因为它不会引发异常并让您知道验证是否失败:

if (!TryUpdateModel(listingView))
{
    // there were validation errors => redisplay the view 
    // so that the user can fix those errors
    return View(listingView);
}  

// at this stage you know that validation has passed 
// and you could process the model ...
于 2012-09-20T11:34:58.387 回答