ASP.NET MVC我的表单的简单验证失败

时间:2009-11-30 20:16:24

标签: asp.net-mvc validation

我在文本字段中有一个简单的用户输入RSS提要的地址。如果字段为空,我不会采取行动,这是我的标记:

<%=Html.ValidationSummary() %>
    <table>
        <tr>
            <td>
                Feed Url:
            </td>
            <td>
                <%=Html.TextBox("url", null, new {@style="width:300px"}) %>
            </td>
        </tr></table>

我的控制器也非常简单:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult AddFeed(FormCollection collection)
    {
        string url = collection.Get("url");
        string roles = collection.Get("Roles");
        if (string.IsNullOrEmpty(url))
        {
            ModelState.AddModelError("url", "Please provide a propre feed url");
        }
        if (string.IsNullOrEmpty(roles))
        {
            ModelState.AddModelError("Roles", "Please select a valid role");
        }
        if (ModelState.IsValid)
        {
            Session["url"] = url;
            Session["Roles"] = roles;
            return RedirectToAction("ValidateFeed");
        }
        else
        {
            return View();
        }
    }

当它失败时,它重新加载视图并在它呈现我的文本框的行中发出异常,说明存在空指针异常。这真的让我烦恼,它应该是如此简单......但仍然在挣扎

/ H4mm3r

编辑请忽略Roles元素我的下拉列表,但为了简单起见将其从标记中删除

2 个答案:

答案 0 :(得分:0)

我认为你不能使用ModelSate,如果你没有做类似的事情:

UpdateModel(collection);

TryUpdateModel(collection);

或参数绑定

public ActionResult AddFeed(YourModelType collection)

因为Modelstate与任何模型都没有关联。

正如MSDN参考文献所述:

ModelState类

  

封装模型的状态   绑定到一个属性   动作方法论证,或者   论证本身。

答案 1 :(得分:0)

使用HTML帮助程序时,您可能无法使用null。请在您的表单中尝试此操作:

<%= Html.TextBox("url", String.Empty, new {@style="width:300px"}) %>

我没有测试过,但这是我尝试的第一件事,给出错误信息。