создание и редактирование видов Используйте один и тот же контроллер проверки. Создайте работы правильно, отображая сообщения об ошибках и сохраняет при исправлении любых проблем проверки, обращаясь к представлению индекса. Однако, когда я использую return View (поправка); , сообщения об ошибках показывают и после исправления, и я нажимаю на сохранение, страница обновляется, а не возвращается на страницу индекса. Это, однако, сохраняет изменения. Вот код контроллера (за исключением деталей и удаления деталей): < /p>
using System;
using System.Collections;
using System.Linq;
using System.Threading.Tasks;
using FluentValidation;
using FluentValidation.Results;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Research.Data;
using Research.Models;
using FluentValidation.AspNetCore;
namespace Research.Controllers
{
public class AmendmentsController : Controller
{
private readonly ResearchContext _context;
public AmendmentsController(ResearchContext context)
{
_context = context;
}
// GET: Amendments
public async Task Index(
string sortOrder,
string currentFilter,
string searchString,
int? pageNumber)
{
ViewData["CurrentSort"] = sortOrder;
ViewData["ProjIDSortParm"] = String.IsNullOrEmpty(sortOrder) ? "Proj_desc" : "";
if (searchString != null)
{
pageNumber = 1;
}
else
{
searchString = currentFilter;
}
ViewData["CurrentFilter"] = searchString;
var aMend = from s in _context.Amendment
select s;
if (!String.IsNullOrEmpty(searchString))
{
aMend = aMend.Where(s => s.ProjectID != null).Where(s => s.ProjectID.ToString().Contains(searchString));
}
switch (sortOrder)
{
case "Proj_desc":
aMend = aMend.OrderByDescending(s => s.ProjectID);
break;
default:
aMend = aMend.OrderBy(s => s.ProjectID);
break;
}
int pageSize = 100;
return View(await PaginatedList.CreateAsync(aMend.AsNoTracking(), pageNumber ?? 1, pageSize));
}
// GET: Amendments/Create
[HttpGet]
public IActionResult Create()
{
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID");
var report = _context.YesNoList.ToList();
ViewBag.report = report;
return View();
}
// POST: Amendments/Create
// 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 Create([Bind("AmendmentID,ProjectID,DocumentVersion,ReasonforAmendment,DateAmendmentReceived,AdditionalResource,ARComments, DateSubmittedtoRandD,DateAmendmentApproved")] Amendment amendment)
{
{
AmendmentValidator amendmentvalidator = new AmendmentValidator();
ValidationResult result = amendmentvalidator.Validate(amendment);
if (result.IsValid)
{
if (ModelState.IsValid)
{
_context.Add(amendment);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
}
else { }
{
foreach (var failure in result.Errors)
{
ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage);
}
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", amendment.ProjectID);
var report = _context.YesNoList.ToList();
ViewBag.report = report;
return View(amendment);
}
}
// GET: Amendments/Edit/5
public async Task Edit(int? id)
{
if (id == null || _context.Amendment == null)
{
return NotFound();
}
var amendment = await _context.Amendment.FindAsync(id);
if (amendment == null)
{
return NotFound();
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", amendment.ProjectID);
var report = _context.YesNoList.ToList();
ViewBag.reportlist = report;
return View(amendment);
}
// POST: Amendments/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("AmendmentID,ProjectID,DocumentVersion,ReasonforAmendment,DateAmendmentReceived,AdditionalResource,ARComments, DateSubmittedtoRandD,DateAmendmentApproved")] Amendment amendment)
{
if (id != amendment.AmendmentID)
{
return NotFound();
}
AmendmentValidator amendmentvalidator = new AmendmentValidator();
ValidationResult result = amendmentvalidator.Validate(amendment);
if (ModelState.IsValid)
{
try
{
_context.Update(amendment);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!AmendmentExists(amendment.AmendmentID))
{
return NotFound();
}
else
{
throw;
}
}
//return RedirectToAction(nameof(Index));
}
else { }
{
foreach (var failure in result.Errors)
{
ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage);
}
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", amendment.ProjectID);
var report = _context.YesNoList.ToList();
ViewBag.reportlist = report;
//return RedirectToAction(nameof(Index));
return View(amendment);
}
private bool AmendmentExists(int id)
{
return (_context.Amendment?.Any(e => e.AmendmentID == id)).GetValueOrDefault();
}
}
}
< /code>
edit.cshtml (часть): < /p>
@model Research.Models.Amendment
@using System.Web.Optimization
@using Microsoft.AspNetCore.Mvc
@using System.Web
@using Microsoft.AspNetCore.Html
@using FluentValidation.AspNetCore
@using FluentValidation
@using FluentValidation.Results;
@{
ViewData["Title"] = "Edit";
}
@Html.ValidationSummary(true)
Edit: Amendments
@* *@
@Html.ValidationMessageFor(model => model.DateAmendmentApproved, null, new { @class = "text-danger" })
@section Scripts {
//I use js to allow users to select only the latest date up to today
function addZero(n) {
return parseInt(n) >= 10 ? n.toString() : '0' + n;
}
let dateNow = new Date(),
yearNow = dateNow.getFullYear(),
monthNow = dateNow.getMonth() + 1,
dayNow = dateNow.getDate(),
maxDate = yearNow + '-' + addZero(monthNow) + '-' + addZero(dayNow);
let inp = document.querySelector('#dateAmendmentReceived');
let inp2 = document.querySelector('#dateSubmittedtoRandD');
let inp3 = document.querySelector('#dateAmendmentApproved');
inp.setAttribute('max', maxDate);
inp2.setAttribute('max',maxDate);
inp3.setAttribute('max',maxDate);
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... t-not-edit
Свободно проверка, работая в создании, но не редактировать ⇐ C#
Место общения программистов C#
-
Anonymous
1757318701
Anonymous
создание и редактирование видов Используйте один и тот же контроллер проверки. Создайте работы правильно, отображая сообщения об ошибках и сохраняет при исправлении любых проблем проверки, обращаясь к представлению индекса. Однако, когда я использую return View (поправка); , сообщения об ошибках показывают и после исправления, и я нажимаю на сохранение, страница обновляется, а не возвращается на страницу индекса. Это, однако, сохраняет изменения. Вот код контроллера (за исключением деталей и удаления деталей): < /p>
using System;
using System.Collections;
using System.Linq;
using System.Threading.Tasks;
using FluentValidation;
using FluentValidation.Results;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Research.Data;
using Research.Models;
using FluentValidation.AspNetCore;
namespace Research.Controllers
{
public class AmendmentsController : Controller
{
private readonly ResearchContext _context;
public AmendmentsController(ResearchContext context)
{
_context = context;
}
// GET: Amendments
public async Task Index(
string sortOrder,
string currentFilter,
string searchString,
int? pageNumber)
{
ViewData["CurrentSort"] = sortOrder;
ViewData["ProjIDSortParm"] = String.IsNullOrEmpty(sortOrder) ? "Proj_desc" : "";
if (searchString != null)
{
pageNumber = 1;
}
else
{
searchString = currentFilter;
}
ViewData["CurrentFilter"] = searchString;
var aMend = from s in _context.Amendment
select s;
if (!String.IsNullOrEmpty(searchString))
{
aMend = aMend.Where(s => s.ProjectID != null).Where(s => s.ProjectID.ToString().Contains(searchString));
}
switch (sortOrder)
{
case "Proj_desc":
aMend = aMend.OrderByDescending(s => s.ProjectID);
break;
default:
aMend = aMend.OrderBy(s => s.ProjectID);
break;
}
int pageSize = 100;
return View(await PaginatedList.CreateAsync(aMend.AsNoTracking(), pageNumber ?? 1, pageSize));
}
// GET: Amendments/Create
[HttpGet]
public IActionResult Create()
{
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID");
var report = _context.YesNoList.ToList();
ViewBag.report = report;
return View();
}
// POST: Amendments/Create
// 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 Create([Bind("AmendmentID,ProjectID,DocumentVersion,ReasonforAmendment,DateAmendmentReceived,AdditionalResource,ARComments, DateSubmittedtoRandD,DateAmendmentApproved")] Amendment amendment)
{
{
AmendmentValidator amendmentvalidator = new AmendmentValidator();
ValidationResult result = amendmentvalidator.Validate(amendment);
if (result.IsValid)
{
if (ModelState.IsValid)
{
_context.Add(amendment);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
}
else { }
{
foreach (var failure in result.Errors)
{
ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage);
}
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", amendment.ProjectID);
var report = _context.YesNoList.ToList();
ViewBag.report = report;
return View(amendment);
}
}
// GET: Amendments/Edit/5
public async Task Edit(int? id)
{
if (id == null || _context.Amendment == null)
{
return NotFound();
}
var amendment = await _context.Amendment.FindAsync(id);
if (amendment == null)
{
return NotFound();
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", amendment.ProjectID);
var report = _context.YesNoList.ToList();
ViewBag.reportlist = report;
return View(amendment);
}
// POST: Amendments/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("AmendmentID,ProjectID,DocumentVersion,ReasonforAmendment,DateAmendmentReceived,AdditionalResource,ARComments, DateSubmittedtoRandD,DateAmendmentApproved")] Amendment amendment)
{
if (id != amendment.AmendmentID)
{
return NotFound();
}
AmendmentValidator amendmentvalidator = new AmendmentValidator();
ValidationResult result = amendmentvalidator.Validate(amendment);
if (ModelState.IsValid)
{
try
{
_context.Update(amendment);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!AmendmentExists(amendment.AmendmentID))
{
return NotFound();
}
else
{
throw;
}
}
//return RedirectToAction(nameof(Index));
}
else { }
{
foreach (var failure in result.Errors)
{
ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage);
}
}
ViewData["ProjectID"] = new SelectList(_context.PIF, "ProjectID", "ProjectID", amendment.ProjectID);
var report = _context.YesNoList.ToList();
ViewBag.reportlist = report;
//return RedirectToAction(nameof(Index));
return View(amendment);
}
private bool AmendmentExists(int id)
{
return (_context.Amendment?.Any(e => e.AmendmentID == id)).GetValueOrDefault();
}
}
}
< /code>
edit.cshtml (часть): < /p>
@model Research.Models.Amendment
@using System.Web.Optimization
@using Microsoft.AspNetCore.Mvc
@using System.Web
@using Microsoft.AspNetCore.Html
@using FluentValidation.AspNetCore
@using FluentValidation
@using FluentValidation.Results;
@{
ViewData["Title"] = "Edit";
}
@Html.ValidationSummary(true)
Edit: Amendments
@* *@
@Html.ValidationMessageFor(model => model.DateAmendmentApproved, null, new { @class = "text-danger" })
@section Scripts {
//I use js to allow users to select only the latest date up to today
function addZero(n) {
return parseInt(n) >= 10 ? n.toString() : '0' + n;
}
let dateNow = new Date(),
yearNow = dateNow.getFullYear(),
monthNow = dateNow.getMonth() + 1,
dayNow = dateNow.getDate(),
maxDate = yearNow + '-' + addZero(monthNow) + '-' + addZero(dayNow);
let inp = document.querySelector('#dateAmendmentReceived');
let inp2 = document.querySelector('#dateSubmittedtoRandD');
let inp3 = document.querySelector('#dateAmendmentApproved');
inp.setAttribute('max', maxDate);
inp2.setAttribute('max',maxDate);
inp3.setAttribute('max',maxDate);
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79758102/fluent-validation-working-in-create-but-not-edit[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия