【发布时间】:2013-10-19 06:33:45
【问题描述】:
我的 RouteConfig,cs 文件中有以下路由:
routes.MapRoute(
name: "SectionHomePage",
url: "{SectionType}/{SectionID}",
constraints: new { SectionType = @"(Books|Cinema|Collections|Games)" },
defaults: new { controller = "SectionHomePageController" }
);
如果可能的话,我想做的是将action 参数重命名为SectionType,或者以某种方式将SectionType 分配给action 参数。 (我知道我可以将 SectionType 重命名为 action,但为了便于阅读,我想保持原名。
控制器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace FFInfo.WebUI.Controllers
{
public class SectionHomePageController : Controller
{
// GET: /SectionHomePage/
public ActionResult Games()
{
//ViewBag.Head = RouteData.Values["id"];
return View();
}
}
}
错误:
RouteData 必须包含一个名为 'action' 的项目,且该项目具有非空 字符串值。
【问题讨论】:
-
我没关注,到底是什么问题? Wat 是您当前的结果,您想要的结果是什么?
-
期望的结果是,如果有人访问 mysite.com/Games/GameID,他们将收到 SectionHomePageController 的 Games 操作,并将 GameID 作为传递给它的参数。当前结果是找不到404文件(大概是因为没有定义action参数)
-
请更新您的代码并包含您的控制器和您视图中的操作链接,以便我们查看路由的整个过程。
-
添加了控制器和视图代码,不知道你所说的actionlinks是什么意思,如果你说的是生成URL的页面没有,我只是在浏览器的地址框中输入它。
-
你也能复制准确的错误信息吗?您可以尝试一件事:删除路由中的
SectionHomePageController并将其更改为SectionHomePage。 ASP.NET 自动添加“控制器”,它可能没有拾取它已经存在。