Tag: asp.net mvc routing

mvc路由生成iis 7.5错误禁止

我的WebApplication我在这里有一个ASPX WebForms页面: 〜/ ASPWebforms / MyFolder文件/ Default.aspx的 如果我使用此代码: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapPageRoute( “SomeRoute”, “Test/{reportname}”, “~/ASPWebforms/MyFolder/{reportname}.aspx” ); 然后在浏览器中输入: 本地主机/ mysite的/测试/默认 我得到了所需的结果:显示了〜/ ASPWebforms / MyFolder / Default.aspx页面。 但是,如果我使用以下代码 routes.MapPageRoute( “SomeRoute”, “Test/”, “~/ASPWebforms/MyFolder/Default.aspx” ); 并尝试 本地主机/ mysite的/测试 IIS 7.5说: HTTP错误403.14 – 禁止Web服务器配置为不列出此目录的内容。 我在最后一段代码中做错了吗? Thx提前!

找到了与请求匹配的多个操作

我已经阅读了很多关于路由和控制器的问题,但我找不到我想要的东西。 我有这个结构的控制器: 更新:包含完整的类源。 public class LocationsController : ApiController { private readonly IUnitOfWork _unitOfWork; public LocationsController(IUnitOfWork unitOfWork) { _unitOfWork = unitOfWork; } // GET /api/locations/id public Location Get(Guid id) { return this.QueryById(id, _unitOfWork); } // GET /api/locations public IQueryable Get() { return this.Query(_unitOfWork); } // POST /api/locations public HttpResponseMessage Post(Location location) { var id = _unitOfWork.CurrentSession.Save(location); […]

获取一个完整的url,例如http://google.com作为操作输入

我希望在我的操作中获取url以返回页面的PageRank。 我有这样的路线: routes.MapRoute( name: “PRURL”, url: “Utility/PR/{*url}”, defaults: new { controller = “Utility”, action = “PR”, url = UrlParameter.Optional } ); 但每当我去http://localhost:1619/Utility/PR/http://google.com我只是得到一个System.Web.HttpException告诉我A potentially dangerous Request.Path value was detected from the client (:). 我想解决这个问题,但我不知道怎么做! 有谁能够帮我? 更新 我试过[ValidateInput(false)]但它没有解决问题! 行动是这样的: [ValidateInput(false)] public string PR(string url) { return GooglePageRank.PRChecker.PR(url); } 通过添加Update2 问题没解决! 🙁 最后错误已解决,但url从http://google.com更改为http:/google.com ,我在这里要求它,我得到了答案。

具有多个前导零小数的属性路由

当前的ActionResult: [Route(“EvaluatorSetup/{evalYear}/{department}”)] public ActionResult RoutedEvaluatorSetup(int evalYear, string department) { return EvaluatorSetup((int?)evalYear, department); } 我想用url: /EvaluatorSetup/2014/001.3244 但是,{department}最终是一个字符串,路由不会将{department}作为字符串。 答:我不知道MVC对“001.3244”的期望是什么类型,或者它正在捡起它的类型。 B.我想将它维护为带有可选前导零的字符串,如示例中所示。 我究竟做错了什么? 更新: 我的意思是,当我在返回线上的代码中断时,它永远不会触发。 /EvaluatorSetup/2014/foobar (WORKS!) /EvaluatorSetup/2014/001.3244 (DOESN’T WORK!) 这让我相信我的路由不正确: [Route(“EvaluatorSetup/{evalYear}/{department}”)] 具体来说,似乎001.3244不是有效的字符串。 所以我的问题是如何纠正这个问题: [Route(“EvaluatorSetup/{evalYear}/{department}”)] public ActionResult RoutedEvaluatorSetup(int evalYear, string department) 所以我可以进入一个uri: /EvaluatorSetup/2014/001.3244 优选地,保持前导零的位置。 我想过这样的事情: [Route(“EvaluatorSetup/{evalYear}/{corporation}.{department}”)] 然而,这是猜测。 我甚至不知道这是否有效。 其他更新: RouteConfig.cs中的旧路由(似乎不再起作用)是这样的: routes.MapRoute( “evaluations_evaluatorsetupget”, “evaluations/evaluatorsetup/{evalyear}/{department}”, new { controller = “evaluations”, action […]

在不使用MVC更改URL的情况下为特定URL创建路由

我有一个在www.domain.com上运行的MVC Web应用程序,我需要为另一个域www.domain2.com为同一个Web应用程序配置不同的URL绑定。 新域名www.domain2.com必须返回特定的控制器操作视图,例如/Category/Cars : routes.MapRoute( name: “www.domain2.com”, url: “www.domain2.com”, defaults: new { controller = “Category”, action = “Cars”, id = UrlParameter.Optional } ); 如何在不更改URL的情况下实现此目的,以便访问者插入urlwww.domain2.com并收到视图www.domain.com/category/cars但url仍为www.domain2.com ? 编辑: 我尝试过这种方法,但它不起作用: routes.MapRoute( “Catchdomain2”, “{www.domain2.com}”, new { controller = “Category”, action = “Cars” } );

C#MVC 4 ControllerName属性

我正在为我的MVC 4控制器提供友好的名称,我想做一些像[ActionName=”My-Friendly-Name”]样式的东西,但对于整个控制器。 我找不到关于这种属性的任何信息,那么我该如何去做呢? 另外,我需要添加一个新的MapRoute来处理它吗? 编辑: 例如,我想路由以下url: http://mysite.com/my-reports/Details/5 被路由到以下控制器: [ControllerClass=”my-reports”] // This attribute is made up. I’d like to know how to make this functionality public class ReportsController : Controller { // // GET: /Reports/ public ActionResult Index() { return View(); } public ViewResult Details(int id) { Report report = db.Reports.Single(g => g.Id == id); return […]

控制器ASP.NET MVC中的子文件夹

在我的Controllers文件夹中,我想要一个名为Admin的子文件夹。 当我去http:// localhost:port / Admin / Login /它说无法找到页面。 RouteConfig.cs using System.Web.Mvc; using System.Web.Routing; namespace ICT4Events { 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 } ); } } }

.NET MVC自定义路由

我想知道我是否可以创建一个比控制器更高级别的路由映射。 典型的路由包括“/ controller / action / id”。 我要找的是“section / controller / action / id”或“controller / section / action / id”。 我怎样才能做到这一点?

在控制器上找不到公共操作方法

我有以下控制器方法: public ActionResult GetResults(string viewToReturn, int resultsPerPage, string classification = null, string sessionId = null, int? lastId= null) { … } 通过以下url调用上面的方法: http://localhost:63455/Home/GetResults?viewToReturn=grid&resultsPerPage=30 导致此消息抛出exception: 在控制器’MyWebSite.Controllers.HomeController’上找不到公共操作方法’GetResults’。 这里是RegisterRoutes: …… routes.MapRoute(“Home”, “home/{action}/{*qualifier}”, new { controller = “Home”, action = “Index”, qualifier = UrlParameter.Optional }); …… routes.MapRoute(“SearchTitle”, “{*path}”, new { controller = “Home”, action = “SearchTitle”, path = UrlParameter.Optional […]

在ASP.NET MVC 3中为控制器设置默认操作(而不是索引)

我有一个名为Dashboard的控制器,其中包含3个操作: Summary , Details和Status ,其中任何一个都不带ID或任何其他参数。 我希望URL /Dashboard路由到Dashboard控制器的Summary操作,如/Dashboard/Summary那样,但我无法找出添加路由的正确方法。 在Global.asax.cs ,我有以下内容: routes.MapRoute( “Default”, // Route name “{controller}/{action}/{id}”, // URL with parameters new {controller = “Home”, action = “Index”, id = UrlParameter.Optional} // Parameter defaults ); routes.MapRoute( “/Dashboard”, “Dashboard”, new { controller = “Dashboard”, action = “Summary” } ); 对于第二部分,我也尝试过: routes.MapRoute( “/Dashboard”, “{controller}”, new { controller = “Dashboard”, […]