Tag: asp.net mvc routing

使用c#MVC3 Html.ActionLink渲染引导程序下拉菜单

因此我遇到了MVC ActionLink和bootstrap下拉列表的问题。 我成功了简单的菜单扩展,我传递了像字符串和一个bool这样的参数。 但现在我正在尝试创建自己的扩展,它可以生成Bootstrap Dropdown并将选定的css类添加到下拉列表的父级 – “ONEofTHEdropdownITEMSselected” – 当选择下拉列表中的某个项目时(选择下拉项目时,它会路由到不同的控制器那里)可以是少数或更多控制器): Dropdown 和 Dropdown Action1 Action2 下面是我的UI / MenuExtensions.cs我想要实现的 – 传递两个可以生成引导下拉列表的参数,我可以在该下拉列表中手动插入新的菜单项。 public static class MenuExtensions { public static MvcHtmlString MenuItem( this HtmlHelper htmlHelper, string text, string action, string controller, string cssClass = “item”, bool isController = false ) { var li = new TagBuilder(“li”); var routeData = […]

任务异步控制器方法没有命中

所以,我们有一个MVC项目,已经通过不同版本的MVC从1升级到4。 现在我们有一个控制器方法: public async Task IndexAsync() 所以,如果我们去http://somedomain.xyz/WhicheverController 或 http://somedomain.xyz/WhicheverController/Index ,我们将迎来404。 http://somedomain.xyz/WhicheverController/IndexAsync路由到方法就好了。 我们的路由出了什么问题?

将多个参数从url传递到html.actionlink

我是MVC的新手,当我尝试通过URL传递多个参数时,我正在努力使用路由。 从包含URL的页面: /PersonCAFDetail/Index/3?memberid=4 …我正在尝试将Html.ActionLink设置为指向Create操作,使得id = 3且memberid = 4。 阅读了许多类似的post后,似乎以下内容应该有效: @Html.ActionLink(“Create New”, “Create”, null, new { memberid = “memberid” }) 但是,这会导致URL创建如下: Create New 我有一条路线设置为: routes.MapRoute( name: “PersonCAFDetail”, url: “PersonCAFDetail/Create/{id}/{memberid}”, defaults: new { controller = “PersonCAFDetail”, action = “Create”, id = “@\d+”, memberid = @”\d+” } ); 控制器接受两个参数,如下所示: public ActionResult Create(int id, int memberid) { int cafID […]

.NET MVC路由 – 在路由开始时捕获?

有什么方法可以匹配: /a/myApp/Feature /a/b/c/myApp/Feature /x/y/z/myApp/Feature 有一条路线不明确知道myApp / Feature之前的路径是什么? 我基本上想做的是: RouteTable.Routes.MapRoute( “myAppFeatureRoute”, “{*path}/myApp/Feature”, new { controller = “myApp”, action = “Feature” }); 但是你不能在路线的开头放一个笼子。 如果我只是尝试“{path} / myApp / Feature”,那将匹配“/ a / myApp / Feature”而不是“/ a / b / c / myApp / Feature”。 我也尝试了一个正则表达式的捕获,没有任何帮助。 RouteTable.Routes.MapRoute( “myAppFeatureRoute”, “{path}/myApp/Feature”, new { controller = “myApp”, action = “Feature”, path = @”.+” […]

MVC 3尝试将URL启动到View而不是控制器操作

有时当我启动我的MVC 3项目时,它会尝试为正在呈现的视图加载完全限定的URL,而不是控制器中的操作(这给了我404错误)。 其他时候它工作正常,实际上按照预期的方式击中控制器动作,但它大约是50/50。 它有时会访问的URL是: http://localhost:xxxx/Views/Account/LogOn.cshtml 以下是Global.asax文件中的默认路由设置: routes.MapRoute( “Default”, // Route name “{controller}/{action}/{id}”, // URL with parameters new { controller = “Account”, action = “LogOn”, id = UrlParameter.Optional } ); 我也尝试从路由中删除/ {id}参数,因为我觉得登录屏幕不需要它。 有任何想法吗? 目前,该项目的设置非常简单,使用AccountController中的默认操作方法LogOn等。我唯一做的就是更改global.asax文件中的控制器和操作。

从Web APIurl中删除“api”前缀

我有一个API控制器 public class MyController : ApiController { … } 默认情况下,它映射到URL mysite/api/My/Method ,我希望它没有“api”前缀的URL: mysite/My/Method 设置控制器属性[RoutePrefix(“”)]对我没有帮助。 有没有其他方法可以实现这一目标?

生成传出URL时选择了意外的路由

请考虑以下路线: routes.MapRoute( “route1”, “{controller}/{month}-{year}/{action}/{user}” ); routes.MapRoute( “route2”, “{controller}/{month}-{year}/{action}” ); 以下测试: 测试1 [TestMethod] public void Test1() { RouteCollection routes = new RouteCollection(); MvcApplication.RegisterRoutes(routes); RequestContext context = new RequestContext(CreateHttpContext(), new RouteData()); DateTime now = DateTime.Now; string result; context.RouteData.Values.Add(“controller”, “Home”); context.RouteData.Values.Add(“action”, “Index”); context.RouteData.Values.Add(“user”, “user1”); result = UrlHelper.GenerateUrl(null, “Index”, null, new RouteValueDictionary( new { month = now.Month, year = […]

忽略ASP.NET MVC中的路由

我正在学习使用ASP.NET MVC中的路由,并且我正在尝试理解IgnoreRoute方法。 我试图阻止用户访问”Content/{filename}.html” 。 我把它作为RegisterRoutes方法中的第一个调用。 这是我的代码: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“Content/{filename}.html”); routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute(“MyRoute”, “{controller}/{action}/{id}/{*catchall}”, new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }, new { controller = “^.*”, action = “^Index$|^About$” }, new[] { “UrlsAndRoutes.AditionalControllers” }); routes.MapRoute(“MyRoute2”, “{controller}/{action}/{id}/{*catchall}”, new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }, […]

静态图像找不到控制器路径? asp.net mvc路由问题?

我有一个图像文件夹存储在〜/ Content / Images / 我通过加载这些图像 最近,图像没有加载,我在错误日志中收到以下错误。 奇怪的是,有些图像加载正常,而其他图像无法加载。 任何人都知道我的路线有什么问题吗? 我错过了/ Content /文件夹的忽略路由吗? 我也为favicon.ico和一堆其他图像文件得到了同样的错误…… — 3/25/2010 2:32:38 AM — System.Web.HttpException: The controller for path ‘/Content/Images/box_bottom.png’ could not be found or it does not implement IController. at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(Type controllerType) at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) at System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep […]

我应该将RouteParameter或UrlParameter用于Asp.NET web-api路由吗?

我已经看到两者都被使用了,所以我想知道,他们做同样的事情或不同的事情吗? 如果是后者,有什么区别? 我试着通过浏览视觉工作室MVC 4(rc)web api模板来尝试回答它,但遗憾的是它使用了两者,所以我的困惑仍然存在。 这是模板包含的内容: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/{controller}/{id}”, defaults: new { id = RouteParameter.Optional } ); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional } ); } }