2

我有一个基于标准 xml 站点地图的简单菜单,当单击链接时,我希望它发布到没有视图/页面的控制器 actionresult。当我有 url 的视图或页面或其他网站时,我似乎没有问题,但我似乎无法直接转到所需的控制器操作结果......从那里我将做一些额外的事情和返回/重定向等,问题是从 siteMapNode 中定义的标准/属性/元素获取适用的控制器操作结果。

适用的站点地图片段:

<siteMapNode url="~/Home/Test" title="Test SubMenu" description="Test SubMenu" roles="*"> 
  <siteMapNode url="~/Home/TestActionResult" title="Test ActionResult" description="Test ActionResult" roles="*" />     <!-- Does not work -->
  <siteMapNode url="http://www.google.com/" title="Test ActionResult" description="Test   ActionResult" roles="*" target="_blank"/>  <!-- Works -->
</siteMapNode> 

适用的控制器操作结果片段:

public ActionResult TestActionResult()
{
  ...
} 

适用的路线片段:

routes.MapRoute(
  "TestActionResult", 
  "TestActionResult", 
  new { controller = "Home", action = "TestActionResult", area = "" }, 
  new string[] { "Namespace.Controllers" }
);

我得到的唯一错误是找不到大部分无用的资源错误。

例如:

“/”应用程序中的服务器错误。

无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Home/TestActionResult


版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.225

建议?

提前致谢。

4

1 回答 1

0

更改您的路线以匹配它无法找到的 URL(即 TestActionResult -> Home/TestActionResult):

routes.MapRoute(
  "TestActionResult", 
  "Home/TestActionResult", 
  new { controller = "Home", action = "TestActionResult" }
);

或者,如果您想匹配 Home Controller 中的各种操作,请像这样设置您的路线:

routes.MapRoute(
      "HomeActions", 
      "Home/{action}", 
      new { controller = "Home", action = "TestActionResult" }
    );

现在/Home/TestActionResult将转到 Home Controller TestActionResult 动作,/Home/Test并将转到 Home 控制器 Test 动作。

于 2011-08-04T16:49:43.420 回答