Не удалось привязать ввод из html к модели ASP.NET Core.C#

Место общения программистов C#
Ответить
Anonymous
 Не удалось привязать ввод из html к модели ASP.NET Core.

Сообщение Anonymous »

Я пытаюсь создать объект Order. Для этого я создал модель, контроллер и представление, но когда я пытаюсь написать что-то в представлении, ничего не передается в метод post, и я получаю ModelState.IsValid — ложь.
Ошибка:

(Имя поля) не может быть нулевым

Однако все необходимое я ввел.

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

using FindWorkWeb.DataAccess.Data;
using FindWorkWeb.Models.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;

namespace FindWorkWeb.Areas.User.Controllers
{
[Area("User")]
public class OrderController : Controller
{
private readonly UserManager _userManager;
private readonly ApplicationDbContext _context;

public OrderController(UserManager userManager, ApplicationDbContext context)
{
_userManager = userManager;
_context = context;
}

public class InputModel()
{
[Display(Name = "Title")]
public string Title { get; set; }

[Display(Name = "Description")]
public string Description { get; set; }

[Display(Name = "ApproximatedPrice")]
public float ApproximatedPrice { get; set; }

[Display(Name = "City")]
public string City { get; set; }
}

public InputModel Input { get; set; }

[HttpGet]
[Authorize]
public IActionResult Create()
{
Input = new InputModel();
return View(Input);
}

[HttpPost]
public async Task Create(InputModel inputModel)
{
if (ModelState.IsValid)
{
var user = await _userManager.GetUserAsync(User);
var order = new Order
{
ApplicationUserId = user.Id,
Title = Input.Title,
Description = Input.Description,
ApproximatedPrice = Input.ApproximatedPrice,
City = Input.City,
Status = "Pending",
PaymentStatus = false
};

_context.Orders.Add(order);
await _context.SaveChangesAsync();
return RedirectToAction("Index", "Home");
}
return View();
}
}
}

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

@model FindWorkWeb.Areas.User.Controllers.OrderController.InputModel

@{
ViewData["Title"] = "Create Order";
}

Create Order




@*  *@


@*  *@


@*  *@


@*  *@





@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
}
}
Я пробовал много вещей, например, настройку отдельной модели представления с полями, которые должен заполнять пользователь. Пытался использовать другую @model в файле представления. Но теперь я, кажется, застрял здесь на последние два дня.

Подробнее здесь: https://stackoverflow.com/questions/784 ... core-model
Ответить

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

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

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

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

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