我正在使用常規創建一個 MVC 專案,但由于它不起作用,我決定使用該屬性,起初它可以作業,但經過幾次運行它給了我 404,所以我嘗試將所有代碼恢復為第一個那是有效的,但不幸的是它給了我404。
路由配置.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ReportsFilter",
url: "{controller}/{action}/{filter}/{sdate}/{edate}",
defaults: new { controller = "Reports", action = "GetReports", filter = UrlParameter.Optional, sdate = UrlParameter.Optional, edate = UrlParameter.Optional }
);
routes.MapRoute(
name: "AddOrderProduct",
url: "api/datatable/GetProducts/{OrderId}",
defaults: new { controller = "Orders", action = "GetProducts", OrderId = UrlParameter.Optional }
);
}
OrdersController.cs
[HttpPost]
[Route("api/datatable/OrderGetProduct/{OrderId}")]
public ActionResult GetProducts(int OrderId)
{
db.Configuration.ProxyCreationEnabled = false;
// Server Side Parameters
int start = Convert.ToInt32(Request["start"]);
int length = Convert.ToInt32(Request["length"]);
var searchValue = Request.Form.GetValues("search[value]").FirstOrDefault();
var sortColumn = Request.Form.GetValues("order[0][column]").FirstOrDefault();
var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();
var orders = db.Order_product.Where(a => a.Order_id == OrderId).Select(b => b.Product_id);
var dtList = db.Products1.Where(w => w.IsActive == true && !orders.Contains(w.Id)).Select(s => new {
s.Name,
Price = s.Base_price,
ProductId = s.Id
}).ToList();
int totalRows = dtList.Count();
// Filter
if (!string.IsNullOrEmpty(searchValue))
{
dtList = dtList.Where(x => x.Name.ToLower().Contains(searchValue.ToLower())
|| x.Price.ToString().Contains(searchValue)
).ToList();
}
int totalRowsFilter = dtList.Count();
// Sorting
if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir)))
{
switch (sortColumn)
{
case "0":
if (sortColumnDir.ToLower() == "asc")
{
dtList = dtList.OrderBy(x => x.Name).ToList();
}
else
{
dtList = dtList.OrderByDescending(x => x.Name).ToList();
}
break;
case "1":
if (sortColumnDir.ToLower() == "asc")
{
dtList = dtList.OrderBy(x => x.Price).ToList();
}
else
{
dtList = dtList.OrderByDescending(x => x.Price).ToList();
}
break;
}
}
// Paging
dtList = dtList.Skip(start).Take(length).ToList();
return Json(new { data = dtList, draw = Request["draw"], recordsTotal = totalRows, recordsFiltered = totalRowsFilter }, JsonRequestBehavior.AllowGet);
}
運行網址:http://localhost:57848/api/datatable/OrderGetProduct/1
只是給我錯誤 404。我已經嘗試了這里發布的所有解決方案,但仍然得到 404。請幫助。欣賞它在 ASP.NET MVC 上的新功能。
uj5u.com熱心網友回復:
在路由屬性中,您必須在路由的開頭添加一個正斜杠,以表明該路由從根開始,否則該路由將添加到該控制器的默認路由的末尾
[HttpPost]
[Route("~/api/datatable/OrderGetProduct/{OrderId}")]
public ActionResult GetProducts(int OrderId)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452686.html
標籤:C# asp.net-mvc
上一篇:如何從類似于ASP.NETMVC的ASP.NETCore6中的http請求標頭獲取unicode字串?
下一篇:將值從視圖傳遞到控制器
