MVC验证问题1

时间:2009-12-24 00:39:27

标签: c# asp.net asp.net-mvc

Edit.aspx:

<th>Calendar<input id="datepicker" name="datepicker" type="text" class="input-box"/></th>

控制器操作:

    // POST: /Studenti/Edit/5

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(int[] rb, int id, string datepicker)
    {
        List<nastava_prisustvo> nastava = new List<nastava_prisustvo>();
        if (String.IsNullOrEmpty(datepicker))
            ModelState.AddModelError("datepicker", "First name is required");
        try
        {
            if (ModelState.IsValid)
            {
                string poruka = "";
                for (int i = 1; i <= rb.Length; i++)
                {
                    string name = "chk" + i;
                    string selID = Request.Form[name];

                    if (selID == "on")
                    {

                        nastava.Add(new nastava_prisustvo
                        {
                            br_indexa = int.Parse(Request.Form["id_stud" + i]),
                            id_predmet = id,
                            datum = System.DateTime.Parse(Request.Form["datepicker"])
                        });
                    }
                }
                return View("show", nastava);
            }
        }
        catch(Exception ex){

            ModelState.AddModelError("*", "An unexpected error occurred.");
        }
        return View("show", nastava);
        }

    }

如何验证datepicker fiel?如果未选择日期,如何停止发布数据并显示相应的消息。我使用ASP&gt; NET MVC 1并阅读此http://www.superexpert.com/Blog/archive/2008/09/09/asp-net-mvc-tip-42-use-the-validation-application-block.aspx但未解决我的问题

4 个答案:

答案 0 :(得分:1)

如果要在回发之前验证日期,则必须使用客户端验证。 xVal是一个流行的插件。

对于服务器端验证,您将需要查看模型绑定和模型验证。

答案 1 :(得分:1)

ASP.NET MVC不使用您在ASP.NET中使用的相同类型的控件。基本上你必须在JavaScript代码中手动完成大部分工作,而在ASP.NET中它会自动生成代码。

我会使用JQuery或其他东西来验证按钮单击控件中的数据。

答案 2 :(得分:1)

我会坚持服务器端验证。试试这个:

DateTime datePosted;
if (!DateTime.TryParse(Request.Form["datepicker"], out datePosted))
{
    this.ModelState.AddModelError("datepicker", "Invalid Date!");
}

if (this.ModelState.IsValid)
{
    return View("show", nastava);
}
else
{
    // return your GET edit action here
    return Edit(5);
}

您的编辑视图将自动传递任何验证错误,您可以使用验证摘要显示它们。

<%= Html.ValidationSummary() %>

答案 3 :(得分:0)

因为您已使用自己的Javascript在客户端上进行验证,请尝试使用jQuery UI数据选择器: http://jqueryui.com/demos/datepicker/

然后,最简单的说,在服务器端,你可以取字符串值“datepicker”在try / catch中转换它。

var dtDatePicker = new DateTime();
try
{
  dtDatePicker = Convert.ToDateTime(datepicker);
  // worked, carry on
}
catch
{
  // didn't work, invalid date.
}