Джанго создается аналог в ASP.NET MVC - PullRequest
2 голосов
/ 05 июля 2010

Есть ли аналог форм Джанго (http://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs) в ASP.NET MVC 2?

1 Ответ

3 голосов
/ 17 августа 2010

Я перечислил «основные темы», перечисленные в указанной вами ссылке ...


1 - отображение формы HTML с автоматически сгенерированными виджетами форм.

В ASP.NET MVC вы можете использовать Html.EditorFor (Model) для автоматической генерации всей формы.Вы можете добавить атрибуты в модель для любых элементов данных, которые вы не хотите создавать на платформе.

Это создаст полную форму с полями для каждого свойства.

<%= Html.EditorFor(m => m) %>

Или вы можетеиспользуйте его для отдельных свойств

<%= Html.EditorFor(m => m.FirstName) %>

или вы можете сказать ему, какой элемент вам нужен

<%= Html.TextBoxFor(m => m.FirstName) %>

2 - проверить представленные данные на соответствие правилам проверки.

Существует множество способов проверки данных в ASP.NET MVC.Вы можете добавить атрибуты, чтобы сделать элементы в модели обязательными или убедиться, что их значение находится в пределах диапазона и т. Д. В MVC 3 вы также сможете реализовать интерфейс «IValidatable», который добавит «Validate ()»метод для вашего объекта, к которому вы можете добавить свои собственные пользовательские правила.


3 - повторно отобразить форму в случае ошибок проверки.

Это MVCиз коробки вы должны отправить обратно на ту же страницу.Он автоматически добавит классы CSS к элементам, которые не прошли проверку, и заполнит и заполнит заполнители проверки / итоги проверки.

<%= Html.TextBoxFor(m => m.FirstName) %>
<%= Html.ValidationMessageFor(m => m.Firstname) %>

4 - преобразование отправленных данных формы в соответствующие типы данных Python.

Опять же, это из коробки.Если вы отправите форму в действие, MVC получит данные в вашу модель.

[HttpPost]
public ActionResult Edit(CustomerModel model) {
    // model will automatically populated from the form post...

    // Any validation attributes you placed on the model and
    // any "natural" validation issues will already have been
    // checked (i.e. someone typing "A" into a field that is an int
    // on your model
    if (ModelState.IsValid) {
        _myRepository.Save(model);
        return RedirectToAction("Detail", new { id = model.Id });
    }

    // If validation has failed, you can just return the view again
    // so the user can correct the errors
    return View(model);
}
...