尝试 post 到控制器时收到 404 错误

receiving 404 error when trying to post to controller

我正在尝试调用传递 2 个参数的控制器方法,但从未触发控制器操作并返回 404 错误。

在查看了其他类似问题后,我尝试重新格式化 actionlink 并尝试使用 @html.action,确保它是一个 HttpGet 而不是一个 HttpPost 并且显然使操作方法实际上存在于控制器。

操作结果:

     @Html.ActionLink(
                   linkText: item.FileName,
                   actionName: "GetStatement",
                   controllerName: "Statements",
                   routeValues: new { id = item.Id, entityCode = 
    item.EntityCode },
                   htmlAttributes: null)

控制器方法

public class StatementsController : Controller
    {
        [HttpGet]
        public ActionResult GetStatement(int id, int entityCode)
        {
           //go to repository and get statement
        }
    }

我也不确定对应的URL格式是否正确: Statments/GetStatement/1234?entityCode=111

请检查这个你需要更改一些小代码。

In cshtml page

 @Html.ActionLink(
                   linkText: item.FileName,
                   actionName: "GetStatement",
                   controllerName: "Statements",
                   routeValues: new { itemid = item.Id, entityCode = 
    item.EntityCode },
                   htmlAttributes: null)

Controller code

public class StatementsController : Controller
    {
        [HttpGet]
        public ActionResult GetStatement(int itemid, int entityCode)
        {
           //go to repository and get statement
        }
    }

注意:当你在controller action中传递"Id"然后在下面的例子中自动路由转换

public ActionResult HandleException(int id)
        {
            // id mentioned in **RouteConfig** file that's way URL automatic mapped
        }

See the RouteConfig file

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {                
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }            
    }