让我们说我正在将一大堆内容页面 - 愚蠢的HTML - 转换为MVC模型。
我想将所有普通HTML文件粘贴到目录中,并根据控制器“找到”它们。
这种似乎是标准ASP.NET-MVC中的'HomeController'正在做的事情,但我必须明确地添加每个页面。
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
ViewData["Title"] = "About Page";
return View();
}
public ActionResult About2()
{
ViewData["Title"] = "About Page 2";
return View();
}
}
我在'Home'目录中添加了About2.aspx页面,并且必须在HomeController中添加About2方法以启用URL http://localhost:51234/Home/About2。
但是我可以说我有50个HTML页面,我想根据URL找到它们。
我怎么能实现这个目标?
答案 0 :(得分:3)
更新global.asax中的路由处理程序,忽略静态页面的路由。为了使这更容易,我会将它们放在一个单独的目录中。
routes.IgnoreRoute("static/myfile.htm");
答案 1 :(得分:0)
不久之前,在远处的一个星系中我向Castle monorail提交了一个补丁来实现DefaultAction功能,这样做的原因几乎就是你想做的事情。不同之处在于设计人员仍然需要访问动态数据,例如视图中的登录名等。看起来MVC Contrib中的ConventionController支持相同的功能。
基本上,它允许您在没有找到其他匹配方法时调用方法。此方法可以查看请求并确定要呈现的视图。正如我所说,这个解决方案的优点在于设计人员不需要为他们想要向用户显示的每个页面编码的控制器操作方法,但他们仍然可以访问您通过模型提供给他们的可用数据。