CRUD操作を実行する単純なサイトでMvcSiteMapProviderを動作させようとしています。私はそれをほぼ達成しましたが、多くのシナリオで奇妙な動作をしています。
まず、標準的な階層を使用してコントローラーとビューを作成しました:
コントローラー
--> EquipoController
ビュー
--> Equipo --> インデックス / 詳細 / 作成 / 編集 / 削除...
次に、私の mvc.sitemap を定義しました
<mvcSiteMapNode title="Inicio" controller="Home">
<mvcSiteMapNode title="Equipo" controller="Equipo">
<mvcSiteMapNode title="Crear Equipo" action="Create"></mvcSiteMapNode>
<mvcSiteMapNode title="Detalle Equipo" action="Details" dynamicNodeProvider="MvcApplication2.TestDynamicNodeProvider, MvcApplication2">
<mvcSiteMapNode title="Editar Equipo" action="Edit"></mvcSiteMapNode>
<mvcSiteMapNode title="Eliminar Equipo" action="Delete"></mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
Edit 操作と Delete 操作は Details ノードにネストされていることに注意してください。
次に、次のように TestDynamicNodeProvider クラスを実装しました。 public class TestDynamicNodeProvider : DynamicNodeProviderBase { Entities db = new Entities();
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
// Build value
var returnValue = new List<DynamicNode>();
// Create a node for each album
foreach (var equipo in db.GEN_EQUIPO)
{
DynamicNode node = new DynamicNode();
node.Title = equipo.DESCRIPCION;
node.RouteValues.Add("id", equipo.ID);
yield return node;
}
}
}
GEN_EQUIPO に 2 つのアイテム (EQUIPO_A と EQUIPO_B) があるとします。これらは私がすべてのビューで取得するブレッドクラムです:
インデックス: Inicio > Equipo (簡単...)
詳細ビュー (2 番目の項目): Inicio > Equipo > EQUIPO_B (OK)
編集ビュー (2 番目の項目): Inicio > Equipo > EQUIPO_A > エディターEquipo (間違った!)
削除ビュー (2 番目の項目): Inicio > Equipo > EQUIPO_A > Eliminar Equipo (間違った!)
編集ビューと削除ビューで、リストの最初の項目を常に使用してブレッドクラムを作成する理由がわかりません。また、リンクが間違っています ( Equipo/ Details/2 のはずなのにEquipo/Details/1 )
より多くの例のためにキャプチャを添付します。
私は自分が間違っていることについての手がかりがありません!何か案が?