[英]Migrate from ASP.NET Core 2.2 to 3.1 and error 404
從 ASP.NET Core 2.2 遷移到 3.1 后,我在發送表單時收到錯誤 404:
<form id="SpecialShowCreateForm" method="post"
asp-controller="SpecialShow"
asp-action="CreateSpecialShowAsync"
role="form"
data-ajax="true" ,
enctype="multipart/form-data"
<div class="form-group">
<input asp-for="Caption" >
</div>
</form>
[HttpPost]
[AjaxOnly]
[ValidateAntiForgeryToken]
public async Task<ActionResult> CreateSpecialShowAsync([FromForm]SpecialShowViewModel vm)
{
return Json(new { msg = ok });
}
這些代碼也在 startup.cs 文件里面,需要做哪些改動呢? 公共 class 啟動 { readonly IConfigurationRoot 配置;
public Startup(IWebHostEnvironment env)
{
Configuration = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.Json").Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options => options
.UseSqlServer(Configuration.GetConnectionString("Shop")));
services.AddMvc();
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
services.AddMemoryCache();
services.AddSession();
services.AddOptions();
}
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapAreaControllerRoute(
"admin",
"admin",
"Admin/{controller=Default}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
"default", "{controller=Home}/{action=Index}/{id?}");
});
}
我找到了答案問題是命名動作,我刪除了異步,問題就解決了!!! 很奇怪
[HttpPost]
[AjaxOnly]
[ValidateAntiForgeryToken]
public async Task<ActionResult> CreateSpecialShow([FromForm]SpecialShowViewModel vm)
{
return Json(new { msg = ok });
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.