Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 为什么我能';在ASP.NET核心应用程序中,是否进入控制器的后处理部分?_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

Asp.net core 为什么我能';在ASP.NET核心应用程序中,是否进入控制器的后处理部分?

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;

我将数据库中的数据发送到视图,并在下拉列表中显示它们。在挑选了一些物品后,我得到了一个空网页,而不是挑选物品的id以及下拉列表。我发现拾取后,控制器的[HttpPost]部分中的处理不再继续

这是我的控制器:

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" }
                );
        });