gpt4 book ai didi

c# - 使用 MVC3 将共享项(如菜单)的逻辑放在哪里?

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:58 28 4
gpt4 key购买 nike

在我们的代码中发现这一点后,我意识到了一些事情:

  • “现在做,以后做对”是有限制的
  • 我实际上不知道这与 MVC3 有什么关系

    @model int
    @using Company.Core.Logic.Financial
    @using Company.Core.Repositories
    @{
    var values = from AccountPlan e in new AccountPlanRepository().GetItemList()
    where String.IsNullOrEmpty(e.PromoCode) // filter out promotional plans
    select new { id = e.AccountPlanId, name = e.Description };
    var items = new SelectList(values, "id", "name", Model);
    }

    @Html.DropDownListFor(m => m, items)

这具体是一个编辑器模板(@Html.EditorFor(m => m.AccountPlan)),但它让我意识到我不知道这种代码通用在哪里菜单生成器之类的东西。如果您正在使用 MVC3 的布局(谁不是),那么根据用户角色在顶部构建菜单的代码在哪里?我想象 View 代码将遍历预构建的菜单项并对其进行 HTML 化,但是由于模型是强类型的,这是否意味着所有模型都需要了解菜单项?

这一次,这是 Webforms 对我来说更有意义的地方,因为它将进入代码隐藏,但我真的想摆脱它。

编辑:尽管我开始询问布局代码,但我假设它也适用于 EditorTemplates 和 DisplayTemplates。如果这是一个不正确的假设,请告诉我这些应该去哪里。

edit2:我最终想要的是有一个干净的,甚至可能是依赖注入(inject)的地方来运行从 EditorTemplate 调用的代码。也许这是 EditorTemplate 立即调用 RenderAction 的情况?

最佳答案

看起来这很好地解决了问题(请参阅标记的答案,而不是原始问题):

http://forums.asp.net/t/1566328.aspx/1?Building+ASP+NET+MVC+Master+Page+Menu+Dynamically+Based+on+the+current+User+s+Role+s+quot+

基本上,调用 RenderAction(...) 它将构建它需要的模型,而不是强制您让每个模型都需要一个菜单​​项列表。

关于c# - 使用 MVC3 将共享项(如菜单)的逻辑放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908814/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com