проблема проверки с MVC 1 - PullRequest
       12

проблема проверки с MVC 1

1 голос
/ 24 декабря 2009

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);
        }

    }

Как проверить поле выбора даты? Как прекратить публикацию данных, если дата не выбрана и показывать соответствующее сообщение. Я использую ASP> NET MVC 1 и читаю это http://www.superexpert.com/Blog/archive/2008/09/09/asp-net-mvc-tip-42-use-the-validation-application-block.aspx, но не решил мою проблему

Ответы [ 4 ]

1 голос
/ 24 декабря 2009

Я бы придерживался проверки на стороне сервера. Попробуйте это:

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() %>
1 голос
/ 24 декабря 2009

ASP.NET MVC не использует те же элементы управления, которые вы использовали в ASP.NET. В основном вы должны делать большинство вещей вручную в коде JavaScript, тогда как в ASP.NET этот код генерируется автоматически.

Я бы использовал JQuery или что-то еще для проверки данных в элементе управления нажатием кнопки.

1 голос
/ 24 декабря 2009

Если вы хотите проверить дату перед отправкой, вам придется использовать проверку на стороне клиента. xVal - популярный плагин для этого.

Для проверки на стороне сервера вы захотите посмотреть привязку модели и проверку модели.

0 голосов
/ 24 декабря 2009

, поскольку вы проверили на клиенте свой собственный Javascript, попробуйте сборщик данных пользовательского интерфейса jQuery: 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...