编程语言
首页 > 编程语言> > c# – MVC RC验证:这是对的吗?

c# – MVC RC验证:这是对的吗?

作者:互联网

我只是想在MVC RC中做一些简单的验证,并且收到错误.出于这个问题的目的,我没有使用UpdateModel.

以下是表单中的代码:

<%= Html.TextBox("UserId")%>
<%= Html.ValidationMessage("UserId") %>

如果我在控制器中添加以下行,我将在TextBox上得到NullReferenceException:

ModelState.AddModelError("UserId", "*");

所以为了解决这个问题,我还添加了以下内容:

ModelState.SetModelValue("UserId", ValueProvider["UserId"]);

为什么我必须重新定价?如果我添加错误,我只需要这样做,但似乎我不应该这样做.我觉得我做错了什么或者对绑定不够熟悉.

看起来我不是唯一一个看过这个的人.根据请求,这是控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(FormCollection collection)
    {
        AppUser newUser = new AppUser();

        try
        {
            newUser.UserId = collection["UserId"];

            AppUserDAL.AddUser(newUser);

            return RedirectToAction("Index");
        }
        catch (Exception ex)
        {
            ViewData["ReturnMessage"] = ex.Message;

            ModelState.AddModelError("UserId", "*");
            ModelState.SetModelValue("UserId", ValueProvider["UserId"]);


            return View(newUser);
        }

解决方法:

调用此扩展方法:

        public static void AddModelError (this ModelStateDictionary modelState, string key, string errorMessage, string attemptedValue) {
        modelState.AddModelError (key, errorMessage);
        modelState.SetModelValue (key, new ValueProviderResult (attemptedValue, attemptedValue, null));
    }

来自:Issues with AddModelError() / SetModelValue with MVC RC1

标签:c,asp-net-mvc,binding,html-helper,validation
来源: https://codeday.me/bug/20190627/1302348.html