标签: asp.net-mvc-routing

具有不同参数名称的Asp.Net路由

我想一定路线地图,以便自动生成的URL看起来 Admin/controller/action/param对于这两个代码块, @Url.Action("action","controller",new{id="param"})@Url.Action("action","controller",new{type="param"})

我所做的是在区域注册中的以下内容,

context.MapRoute(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { action = "Index", 
                  id = UrlParameter.Optional }, 
            new string[] { "namespaces" });

        context.MapRoute(
            "Admin_type",
            "Admin/{controller}/{action}/{type}",
            new { action = "Index", 
                  type = UrlParameter.Optional }, 
            new string[] { "namespaces" });
Run Code Online (Sandbox Code Playgroud)

当参数名称是id,生成的url是预期的,但是当参数名称是type,而不是controller/action/typevalue,它生成类似的东西controller/action/?type=typevalue

有没有办法生成url类似于controller/action/typevalue保持Admin_default路由器的生成器行为完好无损?

asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas asp.net-mvc-3

3
推荐指数
1
解决办法
2384
查看次数

花瓣括号在MVC中的路径中意味着什么?

我正在设置我的路线与MVC项目,但我对花括号有点困惑...

如果我有...

routes.MapRoute( "Music", "Music/{name}", new {  } );
Run Code Online (Sandbox Code Playgroud)

围绕名称的花括号的目的是什么,这是否会传递给某些东西?或者,如果我传递默认对象,这会映射到什么?

asp.net-mvc asp.net-mvc-routing asp.net-mvc-3

3
推荐指数
1
解决办法
2490
查看次数

MVC3/Razor错误:未找到视图或其主控或视图引擎不支持搜索的位置

我有一个名为Admin的区域.Visual Studio中的文件夹结构如下:

Areas
   Admin
      Controllers
      Views
Run Code Online (Sandbox Code Playgroud)

我有一个名为AccountController的控制器,我在其中有一个名为Verify的Action.我在这个动作中有这行代码:

return View("EmailVerificationComplete");
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

未找到视图"EmailVerificationComplete"或其主页,或者没有视图引擎支持搜索的位置.搜索了以下位置:〜/ Views/Account/EmailVerificationComplete.aspx~/Views/Account/EmailVerificationComplete.ascx~/Views/Shared/EmailVerificationComplete.aspx~/Views/Shared/EmailVerificationComplete.ascx~/Views/Account/EmailVerificationComplete. cshtml~/Views/Account/EmailVerificationComplete.vbhtml~/Views/Shared/EmailVerificationComplete.cshtml~/Views/Shared/EmailVerificationComplete.vbhtml

为什么是这样?为什么MVC不知道相对于Admin区域查看Views文件夹?

我该如何解决这个问题?

谢谢,

萨钦

c# asp.net-mvc-routing razor asp.net-mvc-3

3
推荐指数
2
解决办法
2万
查看次数

如何从MVC3中的区域控制器中走出来?

我的网址路由在"区域"文件夹中正常工作,这意味着我可以从任何一个控制器或视图到另一个,我怎么能从这个区域控制器出来到父控制器?

对于Ex:在我的控制器中,如果我给这条线它是从区域控制器出来并正常工作

//Homecontroller.cs inside Controllers folder
return RedirectToAction("../../Home");  
Run Code Online (Sandbox Code Playgroud)

编码出来并连接到父控制器的正确方法是什么?

asp.net-mvc asp.net-mvc-routing asp.net-mvc-3

3
推荐指数
1
解决办法
2050
查看次数

带有破折号的剃刀文件名

我需要我的页面名称在名称中有一个破折号.我们的愿景

我是MVC&c#的新手,所以我可能会遇到这一切.

这是我的控制器:

  public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index()
        {
            return View();
        }
        //
        // GET: /our-vision/
        public ActionResult ourVision()
        {
            return View();
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后在我的观点中,我有Views/Home/ourVision.cshtml.

当我编译并去http://localhost/ourVision它工作,但当我去http://localhost/our-vision它不.

这是我的路线:

  routes.MapRoute(
            "Default", // Route name
            "{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-routing asp.net-mvc-3

3
推荐指数
1
解决办法
828
查看次数

带有QueryString参数的@ Html.Action MVC 4

我有一个与MVC 4中的Html.Action相关的问题我想将一些Querystring变量传递给Details视图

我现在的代码是

System.Text.StringBuilder MobileData = new System.Text.StringBuilder();

MobileData.AppendFormat("<a style=\"text-align:left;\" data-role=\"button\"     onclick=\"window.location='" + @Url.Action("Taken_Detail", new { id = tk.ID }) + "';\" data-  ajax=\"true\" data-icon=\"alert\"><span class=\"AgenItems\">{1:dd-MM-yyyy}</span>", tk.ID, tk.Datum);
Run Code Online (Sandbox Code Playgroud)

问题是他会将我重定向到localhost/PROJECTNAME/Home/Taken_Detail/2我想要的是Home/Taken_Detail?id = 2我在这里缺少什么我刚开始学习MVC 4,欢迎提出每个提示.

c# asp.net-mvc asp.net-mvc-routing razor asp.net-mvc-4

3
推荐指数
1
解决办法
2435
查看次数

ASP.NET MVC 5(Visual Studio 2013 Preview)更改[授权]的登录URL

嘿伙计们我开始玩ASP.NET MVC 5预览,到目前为止一切都很好(我只能推荐它).

但是,我想知道在哪里可以为Built-In [Authorize]-Attribute 设置Login-Url .我搬到了AccountController一个区域,因此该路径登录动作不再/Account/Login,但是MyArea/Account/Login,这是由忽略[Authorize]-Attribute,这反过来又意味着,每当一个导航设置,一个控制器或动作与属性被重定向到错误的路径/Account/Login.

asp.net-mvc asp.net-mvc-routing asp.net-mvc-5

3
推荐指数
2
解决办法
3316
查看次数

MVC-Routing,为什么我不能忽略默认值,匹配的路由不包含"控制器"路由值,这是必需的

我有这个配置

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
               name: "TestRoute",
               url: "home/MyTestDrillDown/{productcat}",
               defaults: new { controller = "Home", action = "MyTestDrillDown" }
           );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
Run Code Online (Sandbox Code Playgroud)

我想将TestRoute配置为

routes.MapRoute(
               name: "TestRoute",
               url: "home/MyTestDrillDown/{productcat}"
           );
Run Code Online (Sandbox Code Playgroud)

但我看到以下错误. 匹配的路由不包含"控制器"路由值,这是必需的.

我的理解是,如果我有一个硬编码的url,那么它直接匹配一个控制器和一个动作,在我的情况下"home/MyTestDrillDown/{productcat}"匹配HomeControllerMyTestDrillDown动作.

我确信我缺少一些非常基本和重要的东西,因为存在一个MapRoute方法的重载,它只接受NameUrl作为参数.

谢谢

asp.net-mvc asp.net-mvc-routing

3
推荐指数
1
解决办法
2313
查看次数

从默认路由C#MVC中排除控制器

我想阻止路由处理我的一个控制器,叫做MyController.

我认为这可能有用,但它没有:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{urlId}",
    defaults: new { controller = "Home", action = "Index", urlId = UrlParameter.Optional },
    constraints: new { controller = @"^(!?MyController)$" }
);
Run Code Online (Sandbox Code Playgroud)

可悲的是,它阻止我导航到我的任何控制器.

如果控制器包含MyController使用,我只能让它不匹配,(!?MyController.*)但这与它不完全匹配.

我尝试过的所有正则表达式测试人员都认为它应该完全 匹配MyController.

c# regex asp.net-mvc asp.net-mvc-routing

3
推荐指数
1
解决办法
2632
查看次数

ASP.NET核心路由属性 - 由连字符分隔的ID和带连字符的slug

我正在尝试通过Route属性为我的一个控制器操作配置以下url结构:

/产品/ 12345-最纯净的绿色的小部件

这是我的路线:

[Route(@"/products/{id:int}-{slug:regex([[\w\-]]+)}")]
public ContentResult Show(int id, string slug)
Run Code Online (Sandbox Code Playgroud)

这与预期的路线不匹配,但确实匹配:

/产品/ 12345,最纯净

并且只要我添加其他任何不匹配的内容,也会在一个单词后面跟一个尾随连字符匹配.

有趣的是,如果我为/换掉字符串文字连字符(而不是正则表达式连字符),它的工作原理很好:

[Route(@"/products/{id:int}/{slug:regex([[\w\-]]+)}")]
public ContentResult Show(int id, string slug)
Run Code Online (Sandbox Code Playgroud)

成功匹配:

/产品/ 12345 /最纯净的绿色的小部件

所以它似乎绊倒了字符串文字连字符.有任何想法吗?

asp.net asp.net-mvc routes asp.net-mvc-routing asp.net-core

3
推荐指数
1
解决办法
1081
查看次数