我有一个遗留的WebForms网站,我试图添加新的MVC 5页面。
我正在运行VS Express 2013 / IISExpress
我已按照这些页面的说明进行操作:
http://www.codeproject.com/Articles/38778/ASP-NET-WebForms-and-ASP-NET-MVC-in-Harmony https://www.simple-talk.com/dotnet/asp.net/mixing-web-forms-and-asp.net-mvc/ http://www.asp.net/mvc/tutorials/mvc-5/introduction/adding-a-view
我在项目中运行了“管理NuGet包”并安装了ASP.NET MVC和所有依赖项。
我添加了对System.Web.Routing,System.Web.Mvc和System.Web.Razor的引用,创建了一个基本的View和Controller。
一切都在建立和运行。
我可以在应用程序启动时设置断点并查看我的路由是如下创建的:
private void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpRoute(
"AdminPages",
"Admin/{controller}",
new { controller = "Dashboard" }
);
}
我尝试添加属性路由,如下所述:
控制器:
namespace ConnectBusiness.Controllers
{
[RoutePrefix("Admin")]
[Route("{action=index}")]
public class DashboardController : Controller
{
// Dashboard/Index
public ActionResult Index()
{
return View();
//return View("~/MVC5/Views/Administration/Dashboard.cshtml");
}
}
}
Web.config具有以下处理程序:
<remove name="ExtensionlessUrlHandler-Integrated-4.0" /><remove name="OPTIONSVerbHandler" /><remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
但是当我尝试导航到我认为正确的URL时,我总是被重定向到default.aspx,结果是404:
http: //localhost:57330/Admin/Dashboard --> http: //localhost:57330/Admin/Dashboard/default.aspx --> 404
有什么想法导致404重定向以及如何成功导航到我的控制器?
答案 0 :(得分:0)
您是否在Views / Dashboard / index.cshtml中有索引视图?如果您点击了索引操作,那将是它要查找的文件。
您是否启用了属性路由?确保在基于约定的路由之前启用它,以便它首先匹配属性路由。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//enabling attribute routing
routes.MapMvcAttributeRoutes();
//convention-based routing
/routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}
如果您希望网址为 localhost:57330 / Admin / Dashboard ,请尝试以下操作:
[RoutePrefix("Admin")]
[Route("{action=index}")] //default action
public class DashboardController : Controller
{
// route: /Admin/Dashboard
[Route("Dashboard")]
public ActionResult Index()
{
return View();
}
}
你设置它的方式我认为URL将是 localhost:57330 / Admin 或 localhost:57330 / Admin / Index
答案 1 :(得分:0)
这是由配置中安装的UrlRewritingNet(http://www.urlrewriting.net)引起的。
获得的经验:删除其他Url重写器并让MVC处理url重写。