我通过创建一个新的DD项目并添加MVC内容(引用、路由、using等)来组合MVC和DD。
default.aspx上的表列表(来自dd)将显示所有表,
包括
有[脚手架(假)]的。scaffold==true的表的URL具有预期的格式(dd/tablename/list.aspx)。但是,不应该显示的表的URL在表单/home/list中?table=表名。
如果省略了MVC路由(routes.maproute),则不显示scaffold(false)表。或者您可以只保留参数默认值。
我的猜测是,动态数据通过检查是否可以为列表页设置路由来确定表是否可见。dynamicDataRoute将不匹配,因为如果scaffold==false,它将不会生成路由。但是,MVC路由将匹配,因为最后的参数是缺省值。
我是正确的,这是一个错误还是我完全错过了什么?
编辑:
我通过在脚手架上添加过滤表来修复它,就像这样,但这是一个解决方法…
System.Collections.IList visibleTables =
MvcApplication.DefaultModel.VisibleTables.Where(o=>o.Scaffold==true).ToList();
我在global.asax.cs中的注册路由:
public static void RegisterRoutes(RouteCollection routes)
{
DefaultModel.RegisterContext(typeof(studiebase2Entities), new ContextConfiguration() { ScaffoldAllTables = false });
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new DynamicDataRoute("DD/{table}/{action}.aspx")
{
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = DefaultModel
});
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}