// Menu removed
|
MVC есть за что похвалить, но одна проблема, с которой я сталкиваюсь, - это конфликты имен ID. Я впервые заметил это при создании сетки с помощью цикла foreach. С помощью SO я нашел решение использовать шаблоны редактора. Теперь у меня такая же проблема с вкладками. Я использовал эту ссылку, чтобы узнать, как использовать вкладки; http://blog.roonga.com.au/search?updated-max=2010-06-14T19:27:00%2B10:00&max-results=1
Проблема с моими вкладками в том, что я используя поле даты с выбором даты. В приведенном выше примере конфликта имен идентификаторов можно избежать путем ссылки на сгенерированный уникальный идентификатор элемента контейнера. Однако для datepicker идентификатор контейнера не имеет значения, имеет значение только идентификатор поля даты. Итак, что происходит, если я создаю свою вторую вкладку так же, как первую, когда я обновляю свою вторую вкладку, дата на первой обновляется. Итак, ниже мой вид и частичный вид, в котором отображается дата. Когда я нажимаю кнопку «Добавить отсутствие на 1 день», я создаю вкладку для этого экрана;
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/AdminAccounts.master"
Inherits="System.Web.Mvc.ViewPage" %>
AbsenceForEmployee
<% using (Html.BeginForm()) {%>
<%: Html.AntiForgeryToken() %>
<% } %>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<% var unique = DateTime.Now.Ticks.ToString(); %>
<% using (Html.BeginForm("AddAbsenceOneDay", "Employee", FormMethod.Post,
new { id = "frmAddAbsenceOneDay" + unique }))
{ %>
<%: Html.ValidationSummary(true) %>
<% } %>
Вы можете увидеть идентификатор даты в следующем HTML-коде из Firebug
// Menu removed
] Если вы зашли так далеко (!), Меня спросили о контроллере, так что вот он.
[Authorize(Roles = "Administrator, AdminAccounts, ManagerAccounts")]
public ActionResult AddAbsenceOneDay()
{
return View(new EmployeeOtherLeaf());
}
[HttpPost]
[Authorize(Roles = "Administrator, AdminAccounts, ManagerAccounts")]
public ActionResult AddAbsenceOneDay(EmployeeOtherLeaf _absence)
{
if (ModelState.IsValid)
{
_absence.EmployeeId = SessionObjects.EmployeeId;
_absence.OtherLeaveDate = _absence.NullableOtherLeaveDate.GetValueOrDefault(DateTime.Today);
Tuple errorInfo = _absence.IsDateValid();
if (errorInfo.Item1 == true)
{
_absence.AddAndSave();
ViewData["SuccessMessage"] = "Successfully Added.";
return View("EditAbsenceOneDay", _absence);
}
else
{
ViewData["ErrorDateMessage"] = errorInfo.Item2;
return View(_absence);
}
}
else
{
return View(_absence);
}
}