Как разрешить неверное состояние модели при загрузке изображения на страницы бритвы?C#

Место общения программистов C#
Ответить
Anonymous
 Как разрешить неверное состояние модели при загрузке изображения на страницы бритвы?

Сообщение Anonymous »

Моей среда Dev является страница ASP.NET Core Razor на .net 8, с EF Core и MS SQL Server в Visual Studio 2022. < /p>
Я предоставляю конечному пользователю файл Форма загрузки (create.cshtml) для добавления изображений в карусель начальной загрузки. /каталог изображений в моем решении. Эта функция работает правильно. < /P>
Соответствующие данные, связанные с изображением, записываются в базу данных. Эта функциональность не работает. < /P>
Проблема: когда код в файле Create.cshtml.cs достигает строки if (! Modelstate.isvalid). предусмотрено в окне наблюдения: «имя файла, subkey = имя файла, key = имя файла, valyationstate = неверно», причем значение является нулевым. < /p>
Асвязанный класс: < /p>
public class CarouselItem
{
public int Id { get; set; }
public required string Description { get; set; }
[DisplayName("File Name (GUID)")]
public required string FileName { get; set; }
[DisplayName("Alt File Name")]
public required string AltFileName { get; set; }
[DisplayName("Display Start Date")]
public required DateOnly DisplayStartDate { get; set; }
[DisplayName("Display Stop Date")]
public required DateOnly DisplayStopDate { get; set; }
}
< /code>
create.cshtml.cs Файл: < /p>
public class CreateModel : PageModel
{
private readonly IWebHostEnvironment _webHostEnvironment;
private readonly ApplicationDbContext _context;

public CreateModel(IWebHostEnvironment webHostEnvironment, ApplicationDbContext context)
{
_webHostEnvironment = webHostEnvironment;
_context = context;
}

[BindProperty]
public CarouselItem CarouselItem { get; set; }

[BindProperty]
public IFormFile Image { get; set; }

public void OnGet()
{
}

public async Task OnPostAsync()
{
if (Image != null)
{
var fileExtension = Path.GetExtension(Image.FileName);
if (fileExtension.ToLower() == ".jpg")
{
var newFileName = $"{Guid.NewGuid()}{fileExtension}";
var filePath = Path.Combine(_webHostEnvironment.WebRootPath, "images", newFileName);

using (var fileStream = new FileStream(filePath, FileMode.Create))
{
await Image.CopyToAsync(fileStream);
}

CarouselItem.FileName = newFileName;
CarouselItem.AltFileName = Image.FileName;
}
else
{
ModelState.AddModelError("Image", "Only .jpg files are allowed.");
}
}

if (string.IsNullOrEmpty(CarouselItem.FileName))
{
ModelState.AddModelError("CarouselItem.FileName", "The File Name field is required.");
}

if (!ModelState.IsValid)
{
return Page();
}

_context.CarouselItems.Add(CarouselItem);
await _context.SaveChangesAsync();

return RedirectToPage("/Admin/Carousel/Index");
}
}
< /code>
create.cshtml файл: < /p>
Create Carousel Items




Description



Alt File Name



Display Start Date



Display Stop Date



File



Create


@section Scripts {

}


Подробнее здесь: https://stackoverflow.com/questions/793 ... azor-pages
Ответить

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

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

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

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

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