【问题标题】:DurandalJS - Parameters to the MVC ControllerDurandalJS - MVC 控制器的参数
【发布时间】:2013-10-04 12:10:35
【问题描述】:

我开始使用 ASP.NET MVC 4 和 Durandal 开发 SPA。
我自定义了 durandal 视图定位器来调用我的 MVC 控制器并使用“.cshtml”文件作为我的视图。这样做,可以使用 Razor 语法并执行以下操作:

@if (Roles.IsUserInRole("Admin"))
{
   // Code
}

但是,我需要将参数传递给我的控制器以加载不同的数据,然后将其作为视图的模型传递。例如,我有一个仪表板列表,当用户单击打开时,我必须传递仪表板的 ID 以加载其结构。
我的路由是这样配置的:

var routes = [
            { route: 'dashboard/:id', moduleId: 'dashboard', title: 'Dashboard' }]; 

dashboard的viewmodel的activate函数接收参数,但是我需要将id发送给MVC控制器。
我一直在寻找一些方法来做到这一点,但我还没有找到任何东西。有这个question 是类似的,但没有回答。
任何建议表示赞赏。谢谢! :D

【问题讨论】:

  • 我一直对将 Durandal 打包为 NuGet MVC 包的疑问之一是,为什么要同时拥有客户端和服务器端 MVC。我在这里看到几个关于他们如何踩到对方脚趾的问题。有什么理由同时使用两者?
  • 我正在使用 durandal 为我的用户提供更流畅的应用程序。它可以帮助我在其他视图(即登录、菜单、配置等)之间导航。但我必须生成动态 HTML,具体取决于打开的仪表板。最简单的方法是使用 razor 语法。我可以做一个 foreach 并调用 js 组件或部分视图来呈现我的控件。

标签: asp.net-mvc-4 durandal single-page-application


【解决方案1】:

在你的外壳中

define(['plugins/http', 'plugins/router'], function(http, router){

  // make call to build routes based on authenticated user (implement to return an array in 'routes')
  http.get('URL_for_RoutesCurrentUser')
      .then(function(result) {
        $.each(result.routes, function(key, value){
          router.routes.push(value);
        });
      });
})

【讨论】:

  • 感谢您的贡献!我现在很忙,但稍后会试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 2020-10-12
  • 2022-01-25
相关资源
最近更新 更多