gpt4 book ai didi

c# - Nancy,TinyIoC - 卡在盒子里

转载 作者:行者123 更新时间:2023-11-30 21:47:49 24 4
gpt4 key购买 nike

我已经使用 Nancy 一段时间了,我想我已经把自己困在了一个盒子里,无法跳出它来思考我在使用 Nancy 时的错误。我确实看到的选项我不太喜欢。如果我错过了一些可以帮助我的功能,或者我没有很好地列出的替代方法,我们将不胜感激。

问题设置

我正在创建一个小型 Web 应用程序,其中包含普通设备。布局页面和内容页面,甚至还有一些 float 的局部 View 。

我想创建一个动态菜单系统,它会根据登录的用户更改其菜单选项和总体布局。因此,主要工作是会计的用户可能会看到更多的计费功能,日程安排的人可能会看到更多的日程安排功能等

问题本身

问题是,我很难使用 Nancy 和 TinyIoC 启动动态菜单。

最初我想,“我只需设置一个菜单模块和 RenderAction,或等效的,我就可以开始了”,但 Nancy 不喜欢这样。这很好,因为我的替代方案是......在代码片段中的布局页面上与 TinyIoC 对话,该代码片段将解析我的 IMenuManager 并且我可以在那里调用它的 GenerateMenu 函数并传入用户 ID 或者你有什么。我将获取返回的对象并将其传递给 @Html.Partial('path', model) 我很高兴

除非你真的不能以这种方式与 TinyIoC 交谈。除非它是 Nancy 模块本身的扩展,否则您无法轻松访问将接口(interface)解析为实现。

我考虑过的其他选择

  1. 我考虑过使用 JavaScript/jQuery 对 MenuModule 执行 AJAX 调用并以这种方式获取信息,但这感觉很脏,我不喜欢这样做。
  2. 我考虑过的另一个选项是用 PageModel.MenuModel 和 PageModel.RealPageModel 包装所有页面模型。这也感觉很脏,我不是粉丝。

是否存在一些我只是没有看到的其他输出选项?我是否必须放弃 TinyIoC 并以另一种方式重新实现整个事情?

最佳答案

我想您可以采用您提到的两种方法中的一种。

我倾向于使用前端框架来管理这类事情,对我来说,它要么是 riot.js 要么是 vue.js,但不管你是否使用 angular/react 等,同样的事情都适用。

基本上你会调用一个端点来返回一个 json 结果,这会查看用户并调用一个工厂来根据用户信息获取菜单服务,然后菜单服务将负责创建模型结果菜单的。然后,客户端将根据响应构建自己的 View 。


如果您在每次请求时都将菜单向下推,您可以使用 RenderPartial 执行类似的操作,方法与您的模型包含一个 Menu 和一个基于服务结果的 MenuView 相同.

使用工厂,创建/解析正确的服务,生成菜单,将菜单连同其他所有内容附加到响应模型,然后呈现您的部分:

@Html.Partial(Model.MenuView, Model.Menu)

我将这种方法用于我的个人项目。

如果您需要我进一步解释,请告诉我。

关于c# - Nancy,TinyIoC - 卡在盒子里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38136893/

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