C# Nancy,TinyIoC-卡在盒子里
我用Nancy已经有一段时间了,我觉得我把自己放在了一个盒子里,没有足够的思考能力去发现我用Nancy时的错误。我看到的选择我不太喜欢。如果有一些功能我错过了,有人可以帮助我,或替代方法,我没有列出很好的任何帮助将不胜感激 问题设置 我正在创建一个小的web应用程序,在这里我有正常的设备。布局页面和内容页面,甚至一些局部视图 我想创建一个动态菜单系统,根据登录的用户更改其菜单选项和总体布局。因此,主要工作是记帐的用户可能会看到更多的计费功能,进行调度的人可能会看到更多的调度功能,等等 问题本身 问题是,我很难用Nancy和TinyIoC创建一个动态菜单 最初我想,“我只需要设置一个菜单模块和渲染,或者类似的,我就可以开始了”,除了南希不喜欢这样。那很好,因为我的选择是。。。在布局页面的代码片段中与TinyIoC对话,该代码片段将解析我的IMenuManager,我可以使用传入的用户Id或您所拥有的内容在那里调用其GenerateNu函数。我将获取返回的对象并将其传递给@Html.Partial('path',model),我是golden 除非你真的不能用这种方式和TinyIoC说话。除非是模块本身的扩展,否则您无法轻松地解析实现的接口 我考虑过的其他选择C# Nancy,TinyIoC-卡在盒子里,c#,razor,nancy,C#,Razor,Nancy,我用Nancy已经有一段时间了,我觉得我把自己放在了一个盒子里,没有足够的思考能力去发现我用Nancy时的错误。我看到的选择我不太喜欢。如果有一些功能我错过了,有人可以帮助我,或替代方法,我没有列出很好的任何帮助将不胜感激 问题设置 我正在创建一个小的web应用程序,在这里我有正常的设备。布局页面和内容页面,甚至一些局部视图 我想创建一个动态菜单系统,根据登录的用户更改其菜单选项和总体布局。因此,主要工作是记帐的用户可能会看到更多的计费功能,进行调度的人可能会看到更多的调度功能,等等 问题本身
有没有其他我看不到的选择?我是否必须抛弃TinyIoC,以另一种方式重新实施整个过程?我想你可以采取你提到的两种方法中的一种 我倾向于使用前端框架来管理这类事情,对我来说,它要么是riot.js,要么是vue.js,但无论您使用的是angular/react等,同样的东西都适用 基本上,您将调用端点以返回json结果,这将查看用户并调用工厂以获得基于用户信息的菜单服务,然后菜单服务将负责创建结果菜单的模型。然后,客户机将根据响应构建自己的视图
如果您在每个请求中按下菜单,您可以使用
RenderPartial
执行类似操作,方法与您的模型包含基于服务结果的菜单和菜单视图的方法相同
使用factory,创建/解析正确的服务,生成菜单,将菜单与其他所有内容一起附加到响应模型,然后渲染部分:
@Html.Partial(Model.MenuView,Model.Menu)
我将这种方法用于我的个人项目
如果你需要我进一步解释,请告诉我 如果你的需求不是太复杂,你可能会下意识地试图把事情复杂化 你可以这样做,这是你的观点:
@if (Html.RenderContext.Context.CurrentUser.IsAuthenticated())
{
if (Html.RenderContext.Context.CurrentUser.Claims.Contains("Admin"))
{
@Html.Partial("Views/Partials/_AdminMenu")
}
else if (Html.RenderContext.Context.CurrentUser.Claims.Contains("Editor"))
{
@Html.Partial("Views/Partials/_EditorMenu")
}
else if (@Html.RenderContext.Context.CurrentUser.Claims.Contains("Viewer"))
{
@Html.Partial("Views/Partials/_ViewerMenu")
}
else
{
@Html.Partial("Views/Partials/_PublicMenu")
}
}
else
{
@Html.Partial("Views/Partials/_PublicMenu")
}
当然,从后端发回菜单布局更优雅。您将只有一个视图。这可能更容易实现。两者都不是,个人项目。@运气不好,我无法想象你为什么认为这是家庭作业。。。这显然是一个有明确目标的人在编写实际代码,他清楚地解释了问题域,以及他们迄今为止所做的尝试……在思考之后,我将看看我能做些什么,并在riot.js上运行一段时间。我希望能真正利用更多的Nancy/TinyIoC的资料,并希望在那些我忽略的图书馆里有一些东西。。。但这很好。我最糟糕的情况是剥离Nancy,改为在ASP.NETMVC下重新创建网站,然后继续前进。