新しいDDプロジェクトを作成し、MVCのもの(参照、ルーティング、使用法など)を追加することで、MVCとDDを組み合わせました。
default.aspx(DDから)のテーブルのリストには、[ScaffoldTable(false)]のテーブルを含むすべてのテーブルが表示されます。Scaffold == trueのテーブルのURLは、予期された形式(DD / TableName / List.aspx)を持っています。ただし、表示されるべきではないテーブルのURLは、/ Home / List?Table=TableNameの形式になっています。
MVCルーティング(Routes.MapRoute)を省略すると、Scaffold(false)のテーブルは表示されません。または、パラメータのデフォルトのみを省略できます。
私の推測では、動的データは、リストページへのルートを作成できるかどうかを確認することで、テーブルが表示されているかどうかを判断します。Scaffold == falseの場合、ルートが生成されないため、DynamicDataRouteは一致しません。ただし、最後にパラメータがデフォルトであるため、MVCルートは一致します。
私は正しいですか、これはバグですか、それともここで何かが完全に欠けていますか?
編集:このようにScaffoldのVisibleTablesのフィルタリングを追加することで修正しましたが、これは回避策です...
System.Collections.IList visibleTables =
MvcApplication.DefaultModel.VisibleTables.Where(o=>o.Scaffold==true).ToList();
global.asax.csの私のRegisterRoutes:
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
);
}