在ASP.NET Core 2中提交表单并收到错误“发送数据状态代码:404;未找到”

时间:2018-01-23 23:23:50

标签: c# asp.net-core asp.net-core-mvc form-submit asp.net-core-2.0

我尝试提交一个简单的Form,但我收到了这个错误:

  

“发送数据状态代码:404;未找到”

我使用了ASP.NET Core 2,我是新手!

我该如何解决这个问题?

Startup类的一部分:

 routes.MapRoute(
                name: "ForTest",
                template: "{controller}/{action}/{des}",
                defaults: new { controller = "Comment", action = "Test", des = "no comment!" }
            );

cshtml文件的一部分:

<form method="post" asp-controller="Comment" asp-action="Test"  enctype="multipart/form-data">
    <div class="form-group">
      <textarea id="des" class="form-control" rows="3"></textarea>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

CommentController类的一部分:

[Route("[controller]")]
public class CommentController : Controller
{
    private readonly ApplicationDbContext _context;

    public CommentController(ApplicationDbContext context)
    {
        _context = context;
    }

    [HttpPost]
    [Route("Test/{des}")]
    [ValidateAntiForgeryToken]
    public IActionResult Test(string des)
    {
        return null;
    }
}

1 个答案:

答案 0 :(得分:1)

我建议在 asp-for 上使用 textarea 属性并使用ViewModel类。
另外,修复Route属性。

控制器/型号

public class TestViewModel
{
    public string des { get; set; }
}

public class CommentController : Controller
{
    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult Test(TestViewModel testViewModel)
    {
        return Ok(testViewModel.des);
    }
}

CSHTML

@using @*Set proper namespace for TestViewModel*@
@model TestViewModel

<form method="post" asp-controller="Comment" asp-action="Test" enctype="multipart/form-data">
    <div class="form-group">
        <textarea asp-for="des" rows="3"></textarea>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

enter image description here