标签: asp.net-mvc-routing

如何更改ASP.NET MVC URL中的控制器文本?

我最近被要求修改一个小的asp.net mvc应用程序,使得url中的控制器名称包含破折号.例如,我创建了一个名为ContactUs的控制器,其中包含一个名为Index and Sent的视图,其中url将是http://example.com/ContactUshttp://example.com/ContactUs/Sent.要求我进行更改的人希望网址为http:// example/contact-ushttp://example.com/contact-us/sent.

我不相信我可以更改控制器的名称,因为' - '将是类名中的非法字符.

我正在寻找一个可以应用于控制器类的属性,它可以让我指定控制器在url中使用的字符串,但我还没有找到.

我怎么能做到这一点?

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

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

ASP.NET MVC路由:如何将所有操作重定向到Base Url?

反正有没有让给定控制器中的所有操作重定向到服务器根目录?

例如,如果我有一个带控制器主页和操作术语的URL,我希望URL成为/ terms

如果我有另一个带有控制器主页和操作隐私的URL,那么该URL应该成为/ privacy.

我能够通过硬编码2条路线来做到这一点,但有没有办法自动执行此操作?

routes.MapRoute(
    "Term",
    "terms",
    new { controller = "Home", action = "terms" }
 );

routes.MapRoute(
    "Privacy",
    "privacy",
    new { controller = "Home", action = "privacy" }
);
Run Code Online (Sandbox Code Playgroud)

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

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

为缺少的ASP.Net MVC控制器更正404消息

我有一个MVC 2应用程序,应该总是提供一个"漂亮的"404页面.

但是目前我得到了一个低级别的.Net:"'/ sitename'应用程序中的服务器错误..."

我有一个基本控制器,它有一个NotFound动作,将呈现漂亮的404页面.

处理缺失的操作:

protected override void HandleUnknownAction(string actionName)
{
    this.NotFound(actionName).ExecuteResult(this.ControllerContext);
}
Run Code Online (Sandbox Code Playgroud)

所以访问{site}/ValidController/NotAnAction正确地路由.

但是访问{site}/NotAController没有.

我设置的路线全部为:

routes.MapRoute(
    "MVC routes",
    "{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional });

routes.MapRoute(
    "Catch All", 
    "{*url}",
    new { controller = "System", action = "NotFound" });
Run Code Online (Sandbox Code Playgroud)

catch全部正确捕获不匹配的路由.

所以{site}/Invalid/Action/id/extra通过catch all正确路由.

然而{site}/Invalid,通过"MVC路由"路由获取并且ASP.Net寻找InvalidController,并且当它找不到时抛出一个愚蠢的异常.

我知道我可以在web.config关卡中覆盖它,但这只是重定向到页面.我想知道路由模式何时匹配但控制器不是有效的控制器名称.

我在哪里可以捕捉并改变这种行为?

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

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

在没有区域的控制器中创建子文件夹

我正在开发一个MVC 3 Web应用程序,我想创建这样的东西:

/Controller
      /Blog
         BogController.cs
         ViewsController.cs
         ArticlesController.cs
      /Customers
         SalesController.cs
         ProductsController.cs          
      HomeController.cs
/Views
     /Blog
        Index.aspx
        Summary.aspx
        /Views
           Index.aspx
           Admin.aspx
           Show.aspx
       /Articles
          Show.aspx
          Admin.aspx
    /Customers
       /Sales
          Index.aspx
          Totals.aspx
       /Products
          Index.aspx
          Promotions.aspx
     /Home
       Index.aspx
Run Code Online (Sandbox Code Playgroud)

在控制器中创建子文件夹

但是他们回答这个人的解决方案是针对MVC 2和MVC 3中的MapAreas属性不会退出(或者至少它不会出现在我看来)

那么我可以做些什么来构建像/ Admin/Users/EditUser这样的结构?例如id = 2?

如果我需要创建一个路由规则,你能不能给我写一个如何做的例子.

.net asp.net-mvc directory-structure asp.net-mvc-routing

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

ASP.NET MVC 通配符控制器任意参数路由

我想要控制器/动作,以便当我导航到:

mysite.com/whatever. i type here will pipe into...a ! string.

public ActionResult Index(string anything)
{
    // anything = whatever. i type here will pipe into...a ! string.
    return View();
}
Run Code Online (Sandbox Code Playgroud)

我需要设置自定义路由吗?

我试过这个,但它似乎不能处理时期等。

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

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

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

具有一个固定动作的MVC路由和具有多个可选参数的控制器

基本上我有一个问题,我想在多个控制器中进行一个默认操作,并使用我的自定义URL的多个可选参数,如下所示:

www.mydomain.com/{controller name}/{v1}/{v2}/{v3}/{v4}

并且也不希望在url中使用动作名称.我在routeconfig.cs中有这个路由

routes.MapRoute(
    name: "Blog",
    url: "{controller}/{v1}/{v2}/{v3}/{v4}",
    defaults: new
    {
        controller = "Blog",
        action = "searchBlog",
        v1 = UrlParameter.Optional,
        v2 = UrlParameter.Optional,
        v3 = UrlParameter.Optional,
        v4 = UrlParameter.Optional
    });

routes.MapRoute(
    name: "Forum",
    url: "{controller}/{v1}/{v2}/{v3}/{v4}",
    defaults: new
    {
        controller = "Forum",
        action = "searchForum",
        v1 = UrlParameter.Optional,
        v2 = UrlParameter.Optional,
        v3 = UrlParameter.Optional,
        v4 = UrlParameter.Optional
    });
Run Code Online (Sandbox Code Playgroud)

行动 BlogController

public ActionResult searchBlog(string v1=null,string v2 = null, string  v3 = null, string v4 = null)
{
    // use optional parameters …
Run Code Online (Sandbox Code Playgroud)

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

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

是否可以使用路由属性仅接受路由参数的特定值?

下面的代码做了我想做的事情。如果字符串参数ForSaleOrRent有任何值,但ForSaleForRent操作方法返回HttpNotFoundResult。我的问题是仅使用 Route 属性可以吗?

[Route("post/{ForSaleOrRent}")]
public ActionResult PostProperty(string ForSaleOrRent)
{
    bool IsValidUrl = ForSaleOrRent.ToUpper() == "FORSALE" || 
                      ForSaleOrRent.ToUpper() == "FORRENT";
    if (!IsValidUrl)
    {
        return new HttpNotFoundResult();
    }
    return View(ForSaleOrRent);
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc url-routing asp.net-mvc-routing attributerouting asp.net-mvc-5

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

需要ASP.NET MVC Route Id参数

我有这条路线:

routes.MapRoute(
            "PlaceDetails",
            "{controller}/{action}/{id}",
            new { controller = "Place", action = "Details", id = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

这路由很好:mysite.com/place/details/123

使Id 123可用于场所控制器的详细操作 - 然后可以查找位置'123'.

但是 - 此URL也会传递给控制器​​:mysite.com/place/details/

我希望它返回HttpNotFound- 但它向控制器发送一个空的Id - 并要求我处理它.

如果路由本身实现了这一点,而不是在控制器本身中需要不合理的空检查,那似乎更整洁.

我在谷歌没有发现这个具体问题.

我怎样才能做到这一点?

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

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

如何在Asp.Net MVC中为具有属性路由的操作生成URL

public class HomeController : Controller
{
    [Route("Users/about")]
    [Route("Users/WhoareWe")]
    [Route("Users/OurTeam")]
    [Route("Users/aboutCompany")]
    public ActionResult GotoAbout()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

我为行动定义了许多路线GotoAbout().

如何在生成动作URL时以编程方式在剃刀页面中创建路径URL home/users/about

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

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

是否可以像这样在 ASP.NET Core 中制作对 SEO 友好的 Url

我想问你们是否有可能为我的项目做一些这样的路由/{action}/{title}

在此处输入图片说明

我想知道这是否可能,这个 url 也必须是主键吗?由于没有传递 ID 来知道这是哪篇博文。

谢谢你。

asp.net-routing asp.net-mvc-routing asp.net-core-mvc asp.net-core-2.0

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