我在Durandal中使用 ASP.NET MVC 应用程序中的参数时出现问题...
我使用 MVC路由属性,例如:
[Route("admin/pages")]
,[Route("admin/blog")]
等。
我将 Durandal 整合如下:
main.js:
app.start().then(function() {
viewEngine.viewExtension = '/';
viewLocator.convertModuleIdToViewId = function (moduleId) {
return moduleId.replace('viewmodels', '');
};
app.setRoot('viewmodels/admin/shell', 'entrance');
});
这很好用,因为 viewId 最终匹配MVC路线。
但是,我现在面临着尝试在路线中使用参数的严重问题。例如,我有一条路线如下:
[Route("admin/localization/localizable-strings/{languageId}")]
和我的 Durandal路线就是:
localization/localizable-strings/:languageId
锚标记示例:
<a href="/admin/#localization/localizable-strings/1" class="btn btn-primary btn-xs">Localize</a>
这不起作用,因为似乎 Durandal 没有将参数传递给服务器。它只是从/admin/localization/localizable-strings
检索HTML,返回404页面,因为没有参数传递给MVC操作。
我有什么选择?
答案 0 :(得分:0)
我知道这个问题现在差不多已经有两年了,但我显然忘了用我的解决方案关闭它。基本上,Brett和Marvin是正确的,但由于我当时对Durandal(以及一般的SPA)这么新,我误解了他们告诉我的确切内容。我最终这样做了:
self.cultureCode = null;
self.activate = function (cultureCode) {
self.cultureCode = cultureCode;
if (!self.cultureCode) {
self.cultureCode = null;
}
};
并且durandal路线设置如下;
"localization/localizable-strings/:cultureCode"
然后我会使用该参数通过ajax获取相关数据。我的错误是希望参数能够在MVC操作方法中使用,这样我就可以获得一些数据服务器端,这当然不起作用......