Я прочитал ЛОТ на стеке и прочитал еще несколько статей о том, как создать правильную форму.Я закончил тем, что принял метод PRG. статья здесь
Проблема, с которой я сталкиваюсь, заключается в том, чтобы заставить ее работать в IE 8. Это работает в Firefox.Я просто хочу знать, что я делаю не так.
Обновление
Проверка формы теперь исправлена благодаря методам проб и ошибок.Скрипты проверки с IE НЕ работают с Jquery 1.7.Они работают с Jquery 1.5, как и положено.
Редактировать
Проверка формы также не работает в IE с этой текущей настройкой.Любой свет в этом будет приветствоваться.
Проблемы
1. На самом деле представление представления загружается как частичное представление, которое находится внутри представления индекса.Изобразите всплывающее окно, чтобы добавить нового подписчика.
Поэтому, когда форма отправляется и становится недействительной, она переходит к частичному представлению Create, которое теперь выглядит нелепо, поскольку частичное представление предназначалось для всплывающего окна, а не для страницы.
Как я могу это исправить, чтобы всплывающее окно оставалось, если оно недействительно, вместо того, чтобы отправлять обратно в представление создания?
Стоит ли просто забыть о всплывающих окнах и создать новую страницу для форм?Какова лучшая практика и наиболее практичное решение для PRG и форм?
Моя структура выглядит следующим образом:
Модель
public class Subscribers
{
[Required(ErrorMessage="Name is required")]
[Display(Name = "Subscriber Name: ")]
public string Name { get; set; }
[Required(ErrorMessage = " URI is required")]
[Display(Name = "URI (email or url): ")]
public string URI { get; set; }
[Display(Name = "Channel: ")]
[Required(ErrorMessage = " Channel is required")]
public int SelectedChannelID { get; set; }
[Display(Name = "Subscriber Type: ")]
[Required(ErrorMessage = " Type is required")]
public int? SelectedSubscriberTypeID { get; set; }
public List<Models.Subscriber> getSubscribers()
{
Models.SwitchboardEntities db = new Models.SwitchboardEntities();
List<Models.Subscriber> subscriberList = db.Subscribers.ToList();
return subscriberList;
}
Просмотр
Create.cshmtl
@model Switchboard.Models.Subscribers
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (@Html.BeginForm("Create", "Subscriber", Model, FormMethod.Post, new { id = "addForm" }))
{
<fieldset>
<legend><h3>Create</h3></legend>
<br />
@Html.ValidationSummary(true)
<div class="editor-fields">
@Html.LabelFor(xModels => xModels.Name)
@Html.EditorFor(xModels => xModels.Name)
@Html.ValidationMessageFor(xModels => xModels.Name)
</div>
<div class="editor-fields">
@Html.LabelFor(xModels => xModels.URI)
@Html.EditorFor(xModels => xModels.URI)
@Html.ValidationMessageFor(xModels => xModels.URI)
</div>
}
...
Контроллер
[HttpPost]
public ActionResult Create(Models.Subscribers model)
{
try
{
// TODO: Add insert logic here
if (ModelState.IsValid)
{
return RedirectToAction("Index");
}
else
{
return View(model);
}
}
catch
{
return View(model);
}
}