[英]Submitting a form in ASP.NET Core 2 and getting an error “Sending Data Status Code: 404; Not Found”
I've tried submit a simple Form
but I got this error: 我尝试提交一个简单的
Form
但出现此错误:
"Sending Data Status Code: 404; Not Found"
“发送数据状态代码:404;未找到”
I've used ASP.NET Core 2
and I'm new in it! 我已经使用过
ASP.NET Core 2
,但我是新手!
How can I solve this problem? 我怎么解决这个问题?
a part of Startup class: Startup类的一部分:
routes.MapRoute(
name: "ForTest",
template: "{controller}/{action}/{des}",
defaults: new { controller = "Comment", action = "Test", des = "no comment!" }
);
a part of cshtml file: 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>
a part of CommentController class: 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;
}
}
I would recommend using asp-for
attribute on textarea
and use ViewModel class. 我建议在
textarea
上使用asp-for
属性,并使用ViewModel类。
Also, fix Route
attributes. 此外,修复
Route
属性。
Controller / Model 控制器/型号
public class TestViewModel
{
public string des { get; set; }
}
public class CommentController : Controller
{
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Test(TestViewModel testViewModel)
{
return Ok(testViewModel.des);
}
}
cshtml 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.