Я работаю над проектом в ASP MVC 4. он работал хорошо. но несколько дней назад у меня была очень странная проблема. У меня есть контроллер «Dashboard», когда я называю его индексом как ~/Dashboard/index, он работает нормально, но если я его назову ~/Dashboard, я получил HTTP 404 не найденную ошибку.Asp Mvc 4 action не найден
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "UI.Web.Controllers" }
);
я даже добавить маршрут конфигурации для управления Dashboard, но он не работает
routes.MapRoute(
name: "Dashboard",
url: "Dashboard/{action}/{id}",
defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "UI.Web.Controllers" }
);
же проблема в некоторых контроллеров в моей администратора области (некоторые из них работают хорошо, и некоторые дает HTTP 404 . не найдена ошибка Мой маршрут Область конфигурации является:
context.MapRoute(
"DMS_Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Contact", action = "Index", id = UrlParameter.Optional },
new string[] { "UI.Web.Areas.Admin.Controllers" }
);
в админке индекс действия некоторых контроллера не работает, и один контроллер, имеющий AddEdit действие, которое аль поэтому не работает.
public ActionResult AddEdit(string id)
{
var user = new Models.RegisterModel();//string.IsNullOrWhiteSpace(id) ? new Models.RegisterModel() : Membership.GetUser(id);
if (!string.IsNullOrWhiteSpace(id))
{
var obj = Membership.GetUser(id);
if (obj != null)
{
user.Email = obj.Email;
user.UserName = obj.UserName;
}
}
ViewBag.PageTitle = string.IsNullOrWhiteSpace(id) ? "Add User" : "Edit User";
ViewBag.IsAjax = Request.IsAjaxRequest();
if (Request.IsAjaxRequest())
return PartialView("~/Areas/Admin/Views/Users/AddEditPartial.cshtml", user);
return View("~/Areas/Admin/Views/Users/AddEdit.cshtml", user);
}
в действии AddEdit, если я называю это как ~/Admin/User/AddEdit/а это работает, но если я называю это как ~/администратора/пользователя/AddEdit это также дает HTTP 404 не найдена ошибка.
такое поведение из-за некоторых проблем с обновлением фреймворка или проблемы с кодом? любая идея .... Я не думаю, что это проблема кодирования, потому что тот же код работал до ......
Теперь я был о завершении своего проекта, и на последнем этапе я застрял здесь.
полный routes.config это выглядит следующим образом:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Dashboard",
url: "Dashboard/{action}/{id}",
defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "UI.Web.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "UI.Web.Controllers" }
);
и мой AdminAreaRegistration код:
context.MapRoute(
"DMS_Users",
"Admin/Users/{action}/{id}",
new { controller = "Users", action = "Index", id = UrlParameter.Optional },
new string[] { "UI.Web.Areas.Admin.Controllers" }
);
context.MapRoute(
"DMS_Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Contact", action = "Index", id = UrlParameter.Optional },
new string[] { "UI.Web.Areas.Admin.Controllers" }
);
Порядок, в котором маршруты добавляются вопросы; отредактируйте свой вопрос, чтобы показать маршруты, как они отображаются в файле RouteConfig. –