标签: asp.net-mvc-routing

MVC URL路由

我想生成类似的URL.它应该包括两个与雇主和工作的ID,包括.我很困惑,也不知道.我有一个控制器Employer.

http://localhost/Employer/[employerID]/job/[jobid]
Run Code Online (Sandbox Code Playgroud)

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

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

Routes.Add和MapRoute有什么区别?

我只使用了MapRoute并稍微想知道Routes.Add的使用位置以及它与MapRoute的不同之处?

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

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

如何在MVC3中使用MapRoute和Areas

我的网络应用程序中有一个名为"Admin"的区域.

因此,http://localhost.com/Admin将转到管理区域中的Home Controller和Index Action.

但是,我希望能够使用以下Url命中Admin Home Controller和Index Action:

http://localhost.com/Hello

我有这个尝试:

routes.MapRoute(
            "HelloPage",
            "Hello/{controller}/{action}",
            new{area= "Admin", controller = "Home", action = "Index"},
            new[] { typeof(Areas.Admin.Controllers.HomeController).Namespace });
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在指定命名空间和区域,但我得到的只是路由错误:

未找到视图"索引"或其主数据或视图引擎不支持搜索的位置.

它不是在管理区域中搜索.

有任何想法吗?

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

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

我可以创建一个只接受URL大写的ASP MVC路由吗?

我有以下路线:

context.MapRoute(
    "content",
    "{page}/{title}",
    new { controller = "Server", action = "Index" },
    new { page = @"^[AFL][0-9A-Z]{4}$" }
);
Run Code Online (Sandbox Code Playgroud)

此路由用于以下页面:

/A1234
/F6789
/L0123
Run Code Online (Sandbox Code Playgroud)

然而它也抓住了:/Admin这是我不想要的东西.

我提出了一个临时解决方案,看起来像这样:

context.MapRoute(
    "content",
    "{page}/{title}",
    new { controller = "Server", action = "Index" },
    new { page = @"^[AFL][0-9][0-9A-Z]{3}$" }
);
Run Code Online (Sandbox Code Playgroud)

这只能起作用,因为现在我的所有页面的第二个数字都是0.

有没有办法我可以配置我的路由接受A,F或L后跟4个大写字符,但它没有捕获"dmin"?

不确定是否是这种情况,但我认为正则表达式不应该接受"dmin",因为它是小写的,我只指定AZ.但是当用作MVC路由时,它确实需要"dmin".有没有人知道ASP MVC内部是否将其转换为全部大写?

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

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

ASP.NET MVC Web.Api Routing - 真实世界的例子

我一直在Web.Api中查看路由并查看表示端点的各种方法.我遇到了Instagrams REST端点.(它有一些可爱的文档)使用Web.Api什么是设置像Instagrams用户端点的情况的路由和控制器的最佳方法?

User Endpoints
GET/users/user-id                  Get basic information about a user.
GET/users/self/feed                See the authenticated user's feed.
GET/users/user-id/media/recent     Get the most recent media published by a user.
GET/users/self/media/liked         See the authenticated user's list of liked media.
GET/users/search                   Search for a user by name.
Run Code Online (Sandbox Code Playgroud)

如果我想在我的应用程序中复制这些端点,我将如何处理它.我只需要一个带有5种方法的控制器"用户",我需要什么样的路由才能将REST调用指向这些方法?

asp.net-mvc asp.net-mvc-routing asp.net-web-api asp.net-web-api-routing

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

ASP.NET MVC路由:如何使我的MVC URL具有.aspx扩展名?

我希望MVC应用程序具有.aspx页面URL,即使没有任何物理aspx页面,我将使用Razor视图引擎.

1)是否可以定义这样的路线?

2)如果我想要一个网址,例如下面给出的网址,那条路线会是什么样子:

http://example.com/controller/action.aspx
Run Code Online (Sandbox Code Playgroud)

并且可选地

http://example.com/controller/action.aspx/id
Run Code Online (Sandbox Code Playgroud)

并且可选地

http://example.com/controller/action.aspx?queryParam1=value&queryParam2=value (等等...)

UPDATE

我意识到我想要这样的URL:

http://example.com/controller/id.aspx
Run Code Online (Sandbox Code Playgroud)

换句话说,我不希望指定具体的行动.默认操作将处理所有请求.

另一个更新

我在路由配置中指定的是:

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

但是,虽然上述路线适用于指定了Id的Url,如下所示:

http://example.com/foo/bar.aspx
Run Code Online (Sandbox Code Playgroud)

没有指定Id时它不起作用,例如下面的情况:

http://example.com/foo/
Run Code Online (Sandbox Code Playgroud)

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

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

如何在ASP.Net MVC4中的cshtml文件中获取会话值

请帮助我,值是存储在特定用户的会话中,当我从cshtml检索会话值时,它显示PC用户名而不是数据库中存在的特定用户名.请建议会话代码以显示特定的用户名.我在Cotrtoller中使用此代码.

{public ActionResult LogIn(Models.Tbl_Users user)
        {
            Session["Username"] = user.UserName;
            var sessionval = Session["Username"].ToString();
            if (!ModelState.IsValid)
            {
                if (Isvalid(user.UserName, user.UserPassword))
                {
                    FormsAuthentication.SetAuthCookie(user.UserName, false);

                    string status = Session["Username"].ToString();
                    if (status == "admin")
                    {
                        //  return RedirectToAction("adminpage", "UserLogIn");
                        return RedirectToAction("adminpage", "UserLogin");
                    }
                    else
                    {
                        return RedirectToAction("userpage", "UserLogIn");
 }                   }
Run Code Online (Sandbox Code Playgroud)

这是我的cshtml代码:

{
 @Html.AntiForgeryToken()
        @if (Request.IsAuthenticated)
        { 

        <strong>@Html.Encode(User.Identity.Name)</strong>

                @Html.ActionLink("Log Out","LogOut","UserLogIn")



        }
Run Code Online (Sandbox Code Playgroud)

}

asp.net-mvc-routing asp.net-session asp.net-mvc-4

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

没有控制器后缀的控制器

根据我的设计要求,我想从控制器中排除后缀'Controller'并将其替换为'Resource'.因此'FundsController'将成为'FundsResource'.

问题是当我更改替换术语'Controller'时,我无法通过基于约定或属性路由的路由到我的指定操作,并且得到一个错误,指出找不到具有此名称的控制器.

如何满足上述设计要求,并且能够无问题地路由?在基于约定或属性路由?或者,我们是否可以合并基于约定和属性路由的好处来实现这一目标?

提前致谢.

asp.net-mvc-routing asp.net-web-api attributerouting asp.net-mvc-5 asp.net-web-api2

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

routes.MapMvcAttributeRoutes()和context.Routes.MapMvcAttributeRoutes();之间的区别是什么?

我有mvc应用程序与额外的区域命名 account

我正在使用MvcSiteMapProvider制作面包屑

我有一个返回特定发票详细信息的操作.此操作的URL类似于localhost/account/profile/invs-histr/details/ID,其中ID是要显示的发票的ID.

我有accountAreaRegistration.cs注册区域路线,我有RouteConfig.cs注册全球路线.

目前,我必须localhost/account/profile/invs-histr/details/ID在两个文件中注册路由.如果我没有注册这条路线accountAreaRegistration.cs,我有404 exception.如果我没有注册此路线RouteConfig.cs,则不会渲染面包屑.

的开头RouteConfig.cs文件:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapMvcAttributeRoutes();
}
Run Code Online (Sandbox Code Playgroud)

而且accountAreaRegistration.cs:

public override void RegisterArea(AreaRegistrationContext context)
{
   context.Routes.MapMvcAttributeRoutes();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下,routes.MapMvcAttributeRoutes()和之间的区别是context.Routes.MapMvcAttributeRoutes()什么?

为什么我应该在两个文件中注册路由?

先感谢您

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

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

如何使用破折号使MVC路由处理URL

我在MVC中定义了如下路由:

routes.MapRoute(
   name: "ContentNavigation",
   url: "{viewType}/{category}-{subCategory}",
   defaults: new { controller = "Home", action = "GetMenuAndContent", viewType = String.Empty, category = String.Empty, subCategory = String.Empty });
Run Code Online (Sandbox Code Playgroud)

如果我导航到 http://example.com/something/category-and-this-is-a-subcategory

它将变量填充为:

viewType: "something"
category: "category-and-this-is-a"
subCategory: "subcategory".
Run Code Online (Sandbox Code Playgroud)

我想要的是第一个破折号之前的单词总是进入类别,剩下的进入子类别.所以它会产生:

viewType: "something"
category: "category"
subCategory: "and-this-is-a-subcategory"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

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

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