您可以通過替換斜槓來解決此問題。
ActionLink(item.InterfaceName.Replace('/', '-'), ....)
在此之後,您的鏈接將如下所示:localhost:1842/Interface/Name/FastEthernet0-0
。 當然,你在你的控制器ActionMethod會表現不好,因爲它會期待一個良好命名的接口,因此在調用該方法,你需要恢復的更換:
public ActionResult Name(string interfaceName)
{
string _interfaceName = interfaceName.Replace('-','/');
//retrieve information
var result = db.Interfaces...
}
另一種方法是建立一個自定義路線追趕您的要求:
routes.MapRoute(
"interface",
"interface/{*id}",
new { controller = "Interface", action = "Name", id = UrlParameter.Optional }
);
Your method would be:
public ActionResult Name(string interfaceName)
{
//interfaceName is FastEthernet0/0
}
該解決方案建議由達林季米特洛夫here
如果您編碼一個斜線,並將其打印爲斜槓,它仍然會破壞路線。在我小小的世界裏,我使用cisco設備的地方,OP的命名約定是唯一有效的。可能與供應商有所不同,但我從未見過不同的命名方案。 – Marco