Я объединил MVC и DD, создав новый проект DD и добавив материал MVC (ссылки, маршрутизация, использования и т. Д.).
В списке таблиц по умолчанию .aspx (из DD) будут показаны всетаблицы, , включая таблицы с [ScaffoldTable (false)].URL таблиц с Scaffold == true имеют ожидаемую форму (DD / TableName / List.aspx).Однако URL-адреса таблиц, которые не должны отображаться, имеют вид /Home/List?Table=TableName.
Если вы пропустите MVC-маршрутизацию (Routes.MapRoute), то таблицы со Scaffold (false)) не показаны.Или вы можете не указывать только значения параметров по умолчанию.
Я предполагаю, что динамические данные определяют, является ли таблица видимой, проверяя, можно ли составить маршрут для страницы списка.DynamicDataRoute не будет совпадать, потому что он не будет генерировать маршрут, если Scaffold == false.НО ТОГДА Маршрут MVC будет совпадать из-за значений параметров по умолчанию в конце.
Я прав, и это ошибка, или я что-то здесь упускаю?
РЕДАКТИРОВАТЬ: я исправил это с помощьюдобавив фильтрацию VisibleTables на Scaffold следующим образом, но это обходной путь ...
System.Collections.IList visibleTables =
MvcApplication.DefaultModel.VisibleTables.Where(o=>o.Scaffold==true).ToList();
Мой RegisterRoutes в 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
);
}