我已经创建了一个控制器,但是我不想将默认的chrome_debug.txt
或chrome.exe "https://www.example.com/"
命名为Action
。我在View
中创建了Action,如下所示:
Index
并迁移到URL TopicsController
。
我试图将相同的原理应用于另一个名为[ActionName("Index")]
public ActionResult Topics()
{
var topic = new Topic();
return View("Topics", topic.GetTopics());
}
的控制器,但是现在我有了参数。
xyz.com/Topics
但现在它是在说
找不到资源。
我该怎么做才能使该操作与ModulesController
之类的URL匹配?
答案 0 :(得分:1)
要访问网址 xyz.com/Modules/aaaa ,将Action
操作的Modules
名称更改为aaaa
,如下所示:
[ActionName("aaaa")]
public ActionResult Modules(string id)
{
var topic = new Topic();
return View("Modules", topic.GetTopics());
}
仅供参考-最好避免使用ActionName
过滤器来命名每个动作。在某些时候,它将变得难以管理。而是像这样管理RouteConfig
中的路由:
routes.MapRoute(
name: "Modules",
url: "{controller}/{action}/{id}",
defaults: new { controller="Modules", action="Modules", id=UrlParameter.Optional }
);
以下Urls适用于上述路线:
更新:
如果您想将'aaaa'作为参数,并希望通过 xyz.com/Modules/aaaa 访问操作(其中'aaaa'将作为值绑定到Id
变量),然后将以下Route添加到路由表:
routes.MapRoute(
name: "Modules",
url: "Modules/{id}",
defaults: new { controller="Modules", action="Modules", id=UrlParameter.Optional }
);
请注意上面Url
的值。