MVC自定义路线。DataTokens["Namespaces"]被忽略了。
我不知道为什么创建从Route继承的CustomRoute时,字段DataTokens["Namespaces"]被忽略. ,我得到了错误: 发现多种类型的控制器匹配了​​名为" Home"的控制器.如果服务此请求的路由('{Action}/{ID}')未指定命名空间来搜索与请求匹配的控制器.如果是这种情况,请调查此路线,通过调用" mapRoute"方法的超载,该方法采用" namespaces"参数. 这是样本: application_start() public static void RegisterRoutes(RouteCollection routes) { //Create dataTokens object var dataTokens = new RouteValueDictionary(); var ns = new[] {"MvcDomainRouting.Controllers.Delive
0 2024-04-21
编程技术问答社区
通过modelbinder手动传递一个url来获取RouteData的参数
我有一个复杂的ASP.NET MVC路由方案,我希望能够使用现有路由从"转介仪"请求标题中解析一个URL. 我有像这样的传入请求: http://hostname/{scope}/{controller}/{action} 带有相应的路线映射: routes.MapRoute( name: "scoped", url: "{scope}/{controller}/{action}/{id}", defaults: new { controller = "Equipment", action = "Index", id = UrlParameter.Optional, scope = "shared" } ); 在控制器的基类的OnActionExecuting方法中,我从routedata中拉出结果scope: var scope= (filterContext.RouteData.Values["scope"] as string).ToLower()
0 2024-04-21
编程技术问答社区
.NET核心替换用于mvcCoderOuting.基于名称空间的路由
我们有ASP.NET MVC 5项目,我们计划迁移到ASP.NET Core3.目前,我在新平台上收集了依赖性列表及其等效替代品. 我们正在使用mvccoderouting package来分开不同的C##名称空间之间的不同工作流程" rel =" nofollow noreferrer"> https://maxtoroq.github.io/2013/02/aspnet-mvc-workflow-per-per-controller.html . 现在有了新的平台,我们需要类似的东西.作为最后的选择,我们只能在路由表中指定我们的所有命名空间,但是我不想这样做. 关于如何实现类似行为的任何建议? 编辑: 我认为以身作则,这是可以理解的. 我们有以下控制器结构: - Namespace1 -- Workflow1Controller.Index/Edit/Action -- Workflow2Controller.Index/Edit/Action -- W
0 2024-04-21
编程技术问答社区
ASP.NET MVC路由 , Html.BeginForm
这给我提供了"经销商/搜索者?zip = 12345"的URL 我想最终得到:"经销商/zip/12345" (如果我手动输入URL"经销商/zip/12345",它将返回正确的结果,但是当我单击提交时,它带有"经销商/searchbyzip?zip = 12345" 我想念什么? routes.MapRoute( "DealerSearchByZip",
0 2024-04-21
编程技术问答社区
c# mvc如何将根网址映射到一个特定的视图上
我有一个带有默认通信器的MVC应用程序,该应用程序映射到index.cshtml 所以 http://localhost:/Default/Index 工作正常. 但是默认的根页: http://localhost:/ 没有映射到任何东西. 如何将其映射到我的默认/索引? 这是我的RouteConfig.cs: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MVC5_HttpClientTest_F45 { public class RouteConfig { public static void RegisterRoutes(RouteCollection ro
0 2024-04-21
编程技术问答社区
使用AttributeRouting在URL中隐藏区域
我们正在使用区域将ASP.NET MVC3编写的API版本具有属性来定义我们的路线. 现在,我们有一个" V1"区域,这是我们的第一个API版本.当我们到达V2时,我们将复制V1并进行修改. 我想为网站使用相同的版本控制,并且我不希望路线中的/v1. 我的问题是,我如何隐藏我的网址中的区域,以便我可以致电 mywebsite.com/Users/1 而不是 mywebsite.com/v1/Users/1 这是我的控制器中的东西 [RouteArea("/")] public class HomeController : Controller { // // GET: /v1/Home/ [GET("")] public ActionResult Index() { return View(); }
0 2024-04-21
编程技术问答社区
从默认路由C#MVC中排除控制器
我想防止一条路线处理我的一个控制器,称为MyController. 我认为这可能起作用,但行不通: routes.MapRoute( name: "Default", url: "{controller}/{action}/{urlId}", defaults: new { controller = "Home", action = "Index", urlId = UrlParameter.Optional }, constraints: new { controller = @"^(!?MyController)$" } ); 可悲的是,它阻止了我导航到我的任何控制器. 我只能在控制器包含(!?MyController.*)的情况下才能使它不匹配,但这与它不完全匹配. 我尝试过的所有正则测试仪都表明,它只能匹配 MyController. 解决方案 在此处找到了 http://stephenwalther.com/a
0 2024-04-21
编程技术问答社区
WebAPI 2 带有区域的属性路由不能工作
我很难获得WebAPI 2属性路由进行工作.我要寻找的路由方案是/api/{product}/{controller}/{id-optional},所以像/api/Vision/IdCard.控制器在一个区域中,并以此为设置: namespace DataServices.Controllers.Vision { [RoutePrefix("api/vision")] public class IdCardController : BaseApiController { [System.Web.Mvc.RequireHttps] [Route("idcard")] public IdCardViewModel Get(HttpRequestMessage request) {...} 每当我做到这一点时,我都会得到 404 .我将命名空间包括
0 2024-04-21
编程技术问答社区
从ActionFilterAttribute返回一个视图及其模型
使用内置验证螺旋桨在强大的视图上实现错误处理时,通常在控制器中创建一个try/catch块,并返回带有相应模型的视图作为View()的参数方法: 控制器 public class MessageController : Controller { [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(Models.Entities.Message message) { try { // Insert model into database var dc = new DataContext(); dc.Messages.InsertOnSubmit(message); dc.SubmitChanges(); return RedirectToAc
0 2024-04-21
编程技术问答社区
MVC4:以电子邮件为参数的URL路由
我的网址在我的vs Web服务器上绝对正常 http://localhost:4454/cms/account/edituser/email@domain.com (works) 但是,当我将此网站发布到IIS7.5时,它只会抛出404. http://dev.test.com/cms/account/edituser/email@domian.com (does not work) 但是,如果我删除电子邮件地址 ,奇怪的事情就会发生 http://dev.test.com/cms/account/edituser/email (works , no 404) 但是,如果我用查询字符串更改我的URL,则可以正常工作 http://dev.test.com/cms/account/edituser?id=email@domain.com (works) 这是我的路线条目 routes.MapRoute( "Defaul
0 2024-04-20
编程技术问答社区
用ASP.NET MVC从数据库中选取分层的路径
是否可以路由分层路径以从数据库中映射一个关系如下: 假设我有一个元组/实体"页面",其中M-t-M与"页面"(本身)有关系,我希望能够组合每个页面的slug值以找到合适的页面,例如: mydomain.com/firstpage/secondpage/thirdpage 其中firstpage,secondpage和thirdpage是类型"页面",第三页引用了第二页等. 您将如何通过ASP.NET MVC路由实现此目标? 解决方案 好吧,认为我解决了! 我发现路由时可以使用一个 *(所有参数). 例如: routes.MapRoute( "Pages", "{*pageQuery}", new { controller = "Page", action = "GetPage" } ); 然后,在我的控制器中,我可以使用正则表达式或简单的拆分来解析slug的每个部分. :)
0 2024-04-20
编程技术问答社区
MVC路由摆脱了URL中的/Index
我有一个在运行时间生成的动态链接列表: @Html.ActionLink(x.Name, "Index", "User", new { x.ID }, null) 所以我正在使用用户控制器上的索引方法. 我也有我的ruteconfig.cs(这是一个MVC4应用程序),如下所示: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }
0 2024-04-20
编程技术问答社区
具有不同签名的控制器动作方法
我正在尝试以文件/ID 格式获取我的URL.我猜想我的控制器中应该有两个索引方法,一个具有参数,另一种没有参数.但是我在下面的浏览器中收到此错误消息. 无论如何,这是我的控制器方法: public ActionResult Index() { return Content("Index "); } public ActionResult Index(int id) { File file = fileRepository.GetFile(id); if (file == null) return Content("Not Found"); else return Content(file.FileID.ToString()); } 更新:添加路由完成.感谢Jeff 解决方案 您只能超载动作如果它们在论证和动词中有所不同,而不仅仅是争论.在您的情况下 public ActionResult Index(int? id){
0 2024-04-20
编程技术问答社区
在ASP.NET MVC中创建两个路由不会产生404错误的问题
我正在尝试通过路由来构建我的教程项目.我的主要目标是构建两条路线,无论如何都不会产生404错误.我的意思是,如果路径是错误的,我希望路由使用/home/索引路径.我有以下两条路线 - routes.MapRoute("Default", "{controller}/{action}", new {controller = "Home", action = "Index"} ); routes.MapRoute("Second", "{*catchall}", new {controller = "Home", action = "Index", id = UrlParameter.Optional} ); 当我使用不符合第一个路线的不符合的路径时,它可以正常工作,例如
0 2024-04-20
编程技术问答社区
向控制器传递参数......但不是在URL上。
有没有办法将参数传递给控制器​​而不将其放在URL上? 例如, http://www.winepassionate.com/p/19/wine-chianti-docg-la-moto 在URL上具有19个值19.如果您实际上将该值更改为另一个值,则该页面显示了不同的记录,即使页面名称保持不变. 因此,我想不将ID传递给URL上,但仍然能够将其传递给控制器​​. 推荐的方法是什么? 解决方案 您可以执行帖子并将其作为表单参数发送.我不建议这样做.帖子应用于修改数据的请求.在这种情况下,您最有可能只是为了获取这些数据. ID在URL中的事实是一件好事(请参阅堆栈溢出URL以获取参考).如果您真的不希望用户对其进行修改(我希望这不是因为您认为这使其更加安全,因为它不是因为它不是),那么您可以对其进行一些简单的加密,以使其更加困难猜测/产生有效的ID. 正如某些其他建议的那样,使用tempdata并不是强大的解决方案.它不适用于页面上的链接,只有一个后发布,然后
2 2024-04-20
编程技术问答社区
在MVC动作中隐藏查询字符串
我想将Querystring隐藏到控制器的操作中. 在我的应用程序方案中,类似的东西: 1) 我已经向新窗口打开了新的动作: var check="Particular String" var url = rootUrl("Home/Preview?Docs=" + check); window.open(url, '_blank'); 2)在控制器的侧面,我已经在控制器的操作中使用了一些代码: public ActionResult Preview(string Docs) { TempData["Docs"] = Docs; return RedirectToAction("UnInvoicedPreview"); } 我的查询:: 1)打开新窗口时,它在开始中显示了查询字符串(当它不重新定向到另一个动作时,上升). 2)我不想证明Querystring在URL中.
0 2024-04-20
编程技术问答社区
具有不同签名的控制器动作方法
我正在尝试以文件/ID 格式获取我的URL.我猜想我的控制器中应该有两个索引方法,一个具有参数,另一种没有参数.但是我在下面的浏览器中收到此错误消息. 无论如何,这是我的控制器方法: public ActionResult Index() { return Content("Index "); } public ActionResult Index(int id) { File file = fileRepository.GetFile(id); if (file == null) return Content("Not Found"); else return Content(file.FileID.ToString()); } 更新:添加路由完成.感谢Jeff 解决方案 您只能超载动作如果它们在论证和动词中有所不同,而不仅仅是争论.在您的情况下 public ActionResult Index(int? id){
0 2024-04-20
编程技术问答社区
System.Web.Routing.RouteCollection.GetRouteData中出现的异常情况
我在IIS7上运行的ASP.NET MVC代码中的随机时间已经在随机时间获得了两个例外: Exception type: InvalidOperationException Exception message: Collection was modified; enumeration operation may not execute. at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) at System.Collections.Generic.List'1.Enumerator.MoveNextRare() at System.Collections.Generic.List'1.Enumerator.MoveNext() at System.Web.Routing.RouteCollection.GetRouteData(HttpConte
0 2024-04-20
编程技术问答社区
让ASP.NET MVC的路线标识参数成为必需品
我有这样的路线: routes.MapRoute( "PlaceDetails", "{controller}/{action}/{id}", new { controller = "Place", action = "Details", id = UrlParameter.Optional } ); 这很好地路由: mysite.com/place/details/123 使ID 123可用于该位置控制器的详细信息操作 - 然后可以查找'123'. 但是 - 此URL也传递给控制器​​: mysite.com/place/details/ 我希望它返回HttpNotFound - 但是它将null ID发送给控制器 - 并要求我处理. 如果路线本身实现这一目标,那似乎是整洁的,而不是需要在控制器本身中进行无效检查. 我在Google中没有发现有关此特定问题的任
0 2024-04-19
编程技术问答社区
任务的异步控制器方法没有击中
因此,我们有一个MVC项目,该项目已通过不同版本的MVC从1升级到4. . 现在我们有一个控制器方法: public async Task IndexAsync() 因此,如果我们转到http://somedomain.xyz/WhicheverController 或 http://somedomain.xyz/WhicheverController/Index,我们将获得404. http://somedomain.xyz/WhicheverController/IndexAsync路由到该方法很好. 我们的路由出了什么问题? 解决方案 我相信,如果您从asynccontroller中得出控制器,您的示例将起作用. public class MyController:AsyncController { public async Task IndexAsync() {
0 2024-04-19
编程技术问答社区