标签: asp.net-routing

这样做的一个词ASP.NET(MVC)路由崩溃

我读到一个字符串/单词,这样做路由崩溃但我不记得它是哪个单词/字符串组合.

例:

Microsoft Logging应用程序块和多线程 - 有效

Microsoft Logging应用程序块和多线程 - 有效

Microsoft Logging应用程序块和多线程 - 有效

Microsoft Logging应用程序块和多线程 - 崩溃!

不,它不是香蕉,但它是一个单词/字符串,这样做的路由在每个使用路由系统的应用程序中崩溃.

我想我记得这是一个众所周知的问题,但我不记得我能在哪里找到它.也许我在评论中的stackoverflow上读过它.

asp.net-mvc asp.net-routing

4
推荐指数
1
解决办法
285
查看次数

如何以声明方式创建具有数据绑定参数的RouteUrls?

我正在使用ASP.NET 4中的新路由功能(Web表单,而不是MVC).现在我有一个asp:ListView绑定到数据源.其中一个属性是ClientID我想用来从ListView项链接到另一个页面.在global.asax我已经定义了一个路线:

System.Web.Routing.RouteTable.Routes.MapPageRoute("ClientRoute",
    "MyClientPage/{ClientID}", "~/Client.aspx");
Run Code Online (Sandbox Code Playgroud)

因此,http://server/MyClientPage/2如果存在ClientID = 2 ,则例如是有效的URL.

在ListView项目中,我有一个asp:HyperLink,以便我可以创建链接:

<asp:HyperLink ID="HyperLinkClient" runat="server" 
    NavigateUrl='<%# "~/MyClientPage/"+Eval("ClientID") %>' >
    Go to Client details
</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但我更喜欢使用RouteUrl表达式来使用RouteName而不是硬编码路由.例如,使用常量ClientID = 2,我可以写:

<asp:HyperLink ID="HyperLinkClient" runat="server" 
    NavigateUrl="<%$ RouteUrl:ClientID=2,RouteName=ClientRoute %>" >
    Go to Client details
</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

现在我想知道我是否可以组合路由表达式语法和数据绑定语法.基本上我喜欢用2上面的常量替换<%# Eval("ClientID") %>.但是以天真的方式做到这一点......

<asp:HyperLink ID="HyperLinkClient" runat="server" 
    NavigateUrl='<%$ RouteUrl:ClientID=<%# Eval("ClientID") %>,RouteName=ClientRoute %>' >
    Go to Client details
</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

...不起作用:<%# Eval("ClientID") %>未评估但被视为字符串.到目前为止,使用几种引号也无济于事(大多数情况下为Parser错误).

问题:我有可能在这里实现的目标吗?如果是,那么正确的方法是什么?

先感谢您!

asp.net data-binding asp.net-routing url-routing asp.net-4.0

4
推荐指数
1
解决办法
7291
查看次数

RouteTable.Routes和HttpConfiguration.Routes之间的区别?

我想知道为什么路由似乎可以从HttpConfiguration对象和RouteTable类配置?显然,两个.Routes属性的类型不同,但它们似乎保持同步.他们有可能失去同步吗?我想知道,不过,从Web API的角度看,应该RouteTable.Routes 曾经被使用?

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

4
推荐指数
1
解决办法
722
查看次数

在javascript中设置asp.net MVC4 web api route url返回空字符串

这是我用来设置api url的代码:

var clientUrl = '@Url.RouteUrl("ApiControllerAction", new { httproute="", controller = "Client"})';
Run Code Online (Sandbox Code Playgroud)

在我的route.config中,路由如下所示:

routes.MapHttpRoute(
            name: "ApiControllerAction",
            routeTemplate: "api/{controller}/{action}/{id}"
        );
Run Code Online (Sandbox Code Playgroud)

我试图击中我的控制器上的动作是这样的:

[ActionName("clients")]
    public IQueryable<Client> GetClients(int id)
    {
        return Uow.Clients.GetClients(id);
    }
Run Code Online (Sandbox Code Playgroud)

我有一个javascript函数试图打这个api,但我得到一个404:

var getClients = function (id) {
            return $.ajax(clientUrl + "/clients/" + id)
        };
Run Code Online (Sandbox Code Playgroud)

当我调用getClients(1)时,url试图命中的是:

localhost:12345/clients/1
Run Code Online (Sandbox Code Playgroud)

而不是我期望的这个网址:

localhost:12345/api/client/clients/1
Run Code Online (Sandbox Code Playgroud)

知道这出错了吗?我让这个在另一个项目中工作,不记得我是否应该做其他事情.如果我检查javascript clientUrl =''.

javascript asp.net-routing razor asp.net-mvc-3 asp.net-web-api

4
推荐指数
1
解决办法
6345
查看次数

通过MVC 4 Web API实现"真正的"REST路由

TL; DR摘要:我可以为HTTP GET,PUT和DELETE配置MVC Web API路由吗?

我一直在寻找用私有API替换旧的数据访问层(基于DataSet和TableAdapter的DLL),以便在成功时创建公共API.我已经完成了MVC 4的一些工作来刷新我的前端,并喜欢使用它,因此在深入研究基于WS或WCF的库之前探索"Web API"项目类型似乎是明智的.

初始演示允许我很好地返回XML/JSON,例如:

//service.url/api/Users

...返回用户列表,而特定用户的详细信息可通过以下方式访问:

//service.url/api/Users/99

到目前为止,如此RESTful.但是,为了真正将URI映射到资源,我想将HTTP PUT(新用户)或HTTP DELETE(删除用户)映射到上面列出的URI.在我为这些项目看到的所有示例中,以及Visual Studio中提供的Scaffolds,遵循以下惯例:

//service.url/api/Users/Create

//service.url/api/Users/Delete/99

//service.url/api/Users/Update/99

... 等等.这感觉就像是把这个问题撇在了我的身上,如果将这些问题放在一起,那就太遗憾了!

有关如何最好地接近这个的任何想法?

c# asp.net api rest asp.net-routing

4
推荐指数
1
解决办法
7483
查看次数

根据所选语言更改Controller和Action名称

我有一个名为"Hem"的控制器,Action名称为"Om".我设置瑞典语的默认语言.所以路线将在瑞典网站上,就是这样

/sv/Hem/Om
Run Code Online (Sandbox Code Playgroud)

现在,我想通过单击语言部分中的英语将语言更改为"en".所以路线会像这样自动设定:

/en/Home/About
Run Code Online (Sandbox Code Playgroud)

但功能应该是工作/sv/Hem/Om和在地址栏应显示为/en/Home/About

专家可以帮助我.

c# model-view-controller asp.net-mvc asp.net-routing razor

4
推荐指数
1
解决办法
819
查看次数

如何在ASP.NET Core项目中为MVC和SignalR配置路由?

我正在尝试使用ASP.NET Core 2.1.0-preview1和带有Angular4客户端的ASP.NET Core SignalR 1.0.0-alpha1构建一个Web应用程序.到目前为止,我已经能够搞砸了,实际上可以在客户端内打开SignalR Web套接字连接.然而,这是有代价的,这是我的摘录Startup.cs:

app.UseMvc(routes =>
{
   routes.MapRoute(
      name: "default",
      template: "{controller=Home}/{action=Index}/{id?}");

   /*routes.MapSpaFallbackRoute(
      name: "spa-fallback",
      defaults: new { controller = "Home", action = "Index" });*/
});

app.UseWebSockets();
app.UseSignalR(routes =>
{
   routes.MapHub<Feed>("feed");
});
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我不得不禁用"spa-fallback"路由,如果我不这样做,SignalR将接收纯HTML而不是JSON.当然,缺点是我必须立即输入确切的URL(localhost:12345/home/index例如),这很糟糕.

所以我的问题是,如何让MVC路由和SignalR路由并排?

asp.net-routing signalr asp.net-core-mvc asp.net-core

4
推荐指数
1
解决办法
1783
查看次数

ASP.NET Core 2默认路由有区域

cI经历了有关区域路由的各种帖子,但我仍然无法解决我的问题.

我想以有两条路线的方式拆分我的应用程序.

  • /Areas/Panel
  • /Areas/Website

在每个区域内都有HomeController与行动相对应的适当方法.

每当用户登陆任何1级路线时,我都希望如此:

  • /家
  • /联系
  • /约/公司
  • 等等

是针对 /Areas/Website/{controller}/{action}

或者替代

  • /面板
  • /板/家
  • /板/用户/ 2
  • 等等

/Areas/Panel/{controller}/{action}

我目前的MVC路线是:

   app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");

            routes.MapRoute(
                name: "area",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
        });
Run Code Online (Sandbox Code Playgroud)

但它不起作用,可能是因为我不完全理解如何告诉路由器将Website区域用作默认值.我在控制器本身之前尝试了各种指令,但它没有用.

我可以问你的意见吗?

先感谢您.

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

4
推荐指数
1
解决办法
4095
查看次数

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 MVC中的区域路由

我对区域路由有点困惑.我创建了一个名为Backbone的区域.我有我的默认控制器,视图和模型.

http://localhost:46870/ 
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

Multiple types were found that match the controller named 'home'. This can happen if     
the route that services this request ('{controller}/{action}/{id}') does not specify   
namespaces to search for a controller that matches the request. If this is the case,  
register this route by calling an overload of the 'MapRoute' method that takes a 
'namespaces' parameter.

The request for 'home' has found the following matching controllers:
LearnJavascript.Areas.BackBone.Controllers.HomeController
LearnJavascript.Controllers.HomeController
Run Code Online (Sandbox Code Playgroud)

这是骨干路线(这带有脚手架,我没有做任何改动):

    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
            "BackBone_default",
            "BackBone/{controller}/{action}/{id}", …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-routing

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