我正在使用angularjs来创建页面。页面url配置了stateproviders。 URL包含一个参数。此参数有时会有斜线' /'标志。当参数路由中出现此斜杠符号更改为默认URL时。
我正在创建网站以在IIS中托管它。使用WCF服务。
请让我知道如何解决此问题以接受参数中的斜杠而不是重定向。
Config如下所示 -
$urlRouterProvider.otherwise("/");
$stateProvider
.state('Home', {
url: "/",
templateUrl: "Partials/Landing.html?",
})
.state('Search', {
url: "/search/:search",
templateUrl: "Partials/Search.html?",
})
当我使用以下参数调用搜索状态时,它会将其重定向到Home状态
<a ui-sref=".Search({search:spam/closed})" class="list-group-item"/>
OR
$state.go("Search", {"search" : "spam/closed"});
答案 0 :(得分:1)
如果您打算将多个关键字分开为搜索值,我认为您应该尝试找到另一个字符来分隔它们(“垃圾邮件”和“已关闭”),因为斜杠/
是保留的URL中的字符符合RFC1738。
保留:
许多URL方案保留某些特殊含义的字符:它们在URL的特定于节点的部分中的外观具有指定的语义。如果在方案中保留对应于八位字节的字符,则必须对八位字节进行编码。字符“;”,“/”,“?”,“:”,“@”,“=”和“&amp;”是可以为方案中的特殊含义保留的字符。在方案中不得保留其他字符。
也许你可以使用别的东西并相应地爆炸字符串。
或者,如果您知道搜索变量的最大数量,则可以声明更多路径:search/:search1/:search2
等。这不是一个非常灵活的解决方案,而angular不会路由通配符
答案 1 :(得分:0)