我想生成类似的URL.它应该包括两个与雇主和工作的ID,包括.我很困惑,也不知道.我有一个控制器Employer.
http://localhost/Employer/[employerID]/job/[jobid]
Run Code Online (Sandbox Code Playgroud) 我只使用了MapRoute并稍微想知道Routes.Add的使用位置以及它与MapRoute的不同之处?
我的网络应用程序中有一个名为"Admin"的区域.
因此,http://localhost.com/Admin将转到管理区域中的Home Controller和Index Action.
但是,我希望能够使用以下Url命中Admin Home Controller和Index Action:
我有这个尝试:
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)
正如您所看到的,我正在指定命名空间和区域,但我得到的只是路由错误:
未找到视图"索引"或其主数据或视图引擎不支持搜索的位置.
它不是在管理区域中搜索.
有任何想法吗?
我有以下路线:
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内部是否将其转换为全部大写?
我一直在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
我希望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
请帮助我,值是存储在特定用户的会话中,当我从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)
}
根据我的设计要求,我想从控制器中排除后缀'Controller'并将其替换为'Resource'.因此'FundsController'将成为'FundsResource'.
问题是当我更改替换术语'Controller'时,我无法通过基于约定或属性路由的路由到我的指定操作,并且得到一个错误,指出找不到具有此名称的控制器.
如何满足上述设计要求,并且能够无问题地路由?在基于约定或属性路由?或者,我们是否可以合并基于约定和属性路由的好处来实现这一目标?
提前致谢.
asp.net-mvc-routing asp.net-web-api attributerouting asp.net-mvc-5 asp.net-web-api2
我有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()什么?
为什么我应该在两个文件中注册路由?
先感谢您
我在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)
我怎样才能做到这一点?