Свободно проверка, работая в создании, но не редактироватьC#

Место общения программистов C#
Ответить
Anonymous
 Свободно проверка, работая в создании, но не редактировать

Сообщение 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");}
}


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

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

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

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

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

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