>source

Microsoft 자습서를 사용하여 첫 번째 C # ASP.NET MVC 응용 프로그램을 설정하고 있습니다. https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-2.2&tabs=visual-studio

이 튜토리얼의 과정에서 영화 제작이 작동하는지 확인하라는 메시지를 표시하지만 사용하려고하면 HTTP 오류 400-잘못된 요청이 발생합니다. 입력 한 데이터가 정확하다고 생각하지만 잘못된 요청 외에는 아무것도 얻을 수없는 것 같습니다. 누구나이 문제를 해결하는 방법을 알고 있습니다.

모델 클래스 :

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace MvcMovie.Models
{
    public class Movie
    {
        public int Id { get; set; }
        public string Title { get; set; }
        [Display(Name = "Release Date")]
        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        [Column(TypeName = "decimal(18, 2)")]
        public decimal Price { get; set; }
    }
}

면도기보기 :

@model MvcMovie.Models.Movie
@{
    ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>Movie</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Title" class="control-label"></label>
                <input asp-for="Title" class="form-control" />
                <span asp-validation-for="Title" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="ReleaseDate" class="control-label"></label>
                <input asp-for="ReleaseDate" class="form-control" />
                <span asp-validation-for="ReleaseDate" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Genre" class="control-label"></label>
                <input asp-for="Genre" class="form-control" />
                <span asp-validation-for="Genre" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Price" class="control-label"></label>
                <input asp-for="Price" class="form-control" />
                <span asp-validation-for="Price" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>
<div>
    <a asp-action="Index">Back to List</a>
</div>
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

컨트롤러 동작 방법 :

   public async Task<IActionResult> Create([Bind("Id,Title,ReleaseDate,Genre,Price")] Movie movie)
    {
        if (ModelState.IsValid)
        {
            _context.Add(movie);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(movie);
    }

예상되는 출력은 데이터베이스에 추가하는 것이지만 실제 출력은 잘못된 요청입니다.


  • 답변 # 1

    컨트롤러의 httpPost over 메소드를 가지고 있고 왜 모델을 사용하지 않습니까?

    [HttpPost]
    public async Task<IActionResult> Create([Bind("Id,Title,ReleaseDate,Genre,Price")] ....
    
    

  • 답변 # 2

    Google 크롬과 firefox를 사용하고있었습니다. 분명히 가장자리 나 IE 이외의 테스트는 할 수 없습니다

관련 자료

  • 이전 jboss - 서버를 다시 시작하지 않고 wildfly-10에서 약간 수정하여 다시 업로드 된 파일을 자동으로 검색하는 방법은 무엇입니까?
  • 다음 c# - Windows 양식의 MVP