ASP.NET MVC Fluent Validation не работает вместе с двумя кнопками сохраненияC#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET MVC Fluent Validation не работает вместе с двумя кнопками сохранения

Сообщение Anonymous »

Я попытался «объединить» результаты кода, которые любезно предоставлены Йонгом Шуном в этих вопросах: свободно проверка ... и кнопка для сохранения редактирования ... но с треском провалился. Я просто не достаточно опытен. Есть два способа добраться до представлений «Создать/редактировать». Один из них из индексной страницы модели, а другая - это кнопка (одна для создания, одна для редактирования) на другой модели, которая приведет вас прямо к соответствующему представлению Create/Edit. После того, как вы сделали свои записи/исправили любую проверку, вы можете либо нажать на кнопку, которая приведет вас к индексу представления текущей модели, либо, если вы пришли из другой модели, и вы хотите вернуться туда, нажмите на кнопку, и она вернет вас туда. дольше показа. Вместо этого я получаю «ArgementNullexception: значение не может быть нулевым. (Параметр« элементы »)». Если я введу все правильно, с датами в хронологическом порядке, то это сохраняет нормально.

Код: Выделить всё

// POST: SAEs/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Create([Bind("SAEID,ProjectID,SAEorSUSAR,DateofEvent,DateofNotification,SAECategory,PatientStudyNumber,ReportedToRDOG,DateReportedtoRDOG")] SAE sAE,
string action,
string returnUrl)
{
SAEValidator saevalidator = new SAEValidator();
ValidationResult result = saevalidator.Validate(sAE);

// When validation failed, return to Index View
if (!ModelState.IsValid)
{
foreach (var failure in result.Errors)
{
ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage);
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", sAE.ProjectID);

var report = _context.YesNoList!.ToList();
ViewBag.reportlist = report;

return View(sAE);

}
// Perform DB update after validation is passed
try
{
_context.Add(sAE);
await _context.SaveChangesAsync();

}
catch (DbUpdateConcurrencyException)
{
if (!SAEExists(sAE.SAEID))
{
return NotFound();
}
else
{
throw;
}
}

// Ensure all code paths return a value
// Redirection after model validation passed and successfully update to database
if (action == "SaveAndBack" && !String.IsNullOrEmpty(returnUrl))
{

return Redirect(returnUrl);
}

return RedirectToAction(nameof(Index));
}

// POST: SAEs/Edit/5
// To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Edit(int id, [Bind("SAEID,ProjectID,SAEorSUSAR,DateofEvent,DateofNotification,SAECategory,PatientStudyNumber,ReportedToRDOG,DateReportedtoRDOG")] SAE sAE,
string action,
string returnUrl)
{
if (id != sAE.SAEID)
{
return NotFound();
}

SAEValidator saevalidator = new SAEValidator();
ValidationResult result = saevalidator.Validate(sAE);
if (ModelState.IsValid)
{
if (!ModelState.IsValid)
{
foreach (var failure in result.Errors)
{
ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage);
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", sAE.ProjectID);

var report = _context.YesNoList!.ToList();
ViewBag.reportlist = report;
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", sAE.ProjectID);
var saesusars = _context.SAESUSAR!.ToList();
ViewBag.saesusarslist = saesusars;

var subcats = _context.SAESubCat!.ToList();
ViewBag.subcatslist = subcats;

return View(sAE);
}

// Perform DB update after validation is passed

try
{
_context.Update(sAE);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!SAEExists(sAE.SAEID))
{
return NotFound();
}
else
{
throw;
}
}
}

if (action == "SaveAndBack" && !String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}

//return View(sAE);
return RedirectToAction(nameof(Index));

}
Я бы признателен за помощь, спасибо.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ve-buttons
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»