Asp.net core 为什么我能';在ASP.NET核心应用程序中,是否进入控制器的后处理部分?
我将数据库中的数据发送到视图,并在下拉列表中显示它们。在挑选了一些物品后,我得到了一个空网页,而不是挑选物品的id以及下拉列表。我发现拾取后,控制器的[HttpPost]部分中的处理不再继续 这是我的控制器:Asp.net core 为什么我能';在ASP.NET核心应用程序中,是否进入控制器的后处理部分?,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我将数据库中的数据发送到视图,并在下拉列表中显示它们。在挑选了一些物品后,我得到了一个空网页,而不是挑选物品的id以及下拉列表。我发现拾取后,控制器的[HttpPost]部分中的处理不再继续 这是我的控制器: namespace AssetServer.Controllers { public class AssetsController : Controller { private readonly AssetContext _context;
namespace AssetServer.Controllers
{
public class AssetsController : Controller
{
private readonly AssetContext _context;
public AssetsController(AssetContext context)
{
_context = context;
}
// GET: Assets
public async Task<IActionResult> Index()
{
List<Asset> AssetsTableList = new List<Asset>();
AssetsTableList = await _context.Assets.OrderBy(p => p.Ticker).ToListAsync();
ViewBag.AssetsTableList = AssetsTableList.Select(m => new SelectListItem { Text = m.Ticker, Value = m.Id.ToString() }).ToList();
return View();
}
[HttpPost]
public async Task<IActionResult> Index(Asset Asset)
{
ViewBag.SelectedValue = Asset.Id;
List<Asset> AssetsTableList = new List<Asset>();
AssetsTableList = await _context.Assets.OrderBy(p => p.Ticker).ToListAsync();
ViewBag.AssetsTableList = AssetsTableList.Select(m => new SelectListItem { Text = m.Ticker, Value = m.Id.ToString() }).ToList();
return View();
}
}
}
你确认了吗?@Tseng Nope。据我所知,验证是在[HttpPost]部分的开头执行的,但程序流根本没有到达那里。我的意思是有一个断点。如果它没有击中你的动作,那么你的路线有问题,我们无法判断,因为我们看不到你的路线。@Tseng是的!带断点。路由-这就是我所怀疑的。我添加了编辑我的路线。谢谢您已经错误配置了WebAPI。使用ajax时,您只能使用承载令牌,因为您必须设置
授权
头(即授权:承载abc123
)。您必须仅为/api路径配置该中间件,而不为其他路由配置该中间件。您验证了吗?@Tseng Nope。据我所知,验证是在[HttpPost]部分的开头执行的,但程序流根本没有到达那里。我的意思是有一个断点。如果它没有击中你的动作,那么你的路线有问题,我们无法判断,因为我们看不到你的路线。@Tseng是的!带断点。路由-这就是我所怀疑的。我添加了编辑我的路线。谢谢您已经错误配置了WebAPI。使用ajax时,您只能使用承载令牌,因为您必须设置授权
头(即授权:承载abc123
)。您必须仅为/api路径配置该中间件,而不为其他路由配置该中间件
@model IEnumerable<AssetServer.Domain.Assets.Asset>
@using (Html.BeginForm("Index", "Assets", FormMethod.Post))
{
@Html.DropDownList("Title", (List<SelectListItem>)ViewBag.AssetsTableList, new { onchange = "this.form.submit();" })
@ViewBag.SelectedValue;
}
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index"},
constraints: new { controller = @"^(?:(?!contact|.well-known|api).)*$" }
);
/* WebAPI routes set with attributes */
routes.MapSpaFallbackRoute(
name: "spa-fallback",
constraints: new { controller = @"^(?:(?!contact|.well-known|api).)*$" },
defaults: new { controller = "Home", action = "Index" }
);
});