Durandal 没有将参数传递给 MVC 控制器操作
Durandal not passing parameters to MVC controller action
我在 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,其中 returns 一个 404 页面,因为没有参数传递给 MVC 操作。
我有哪些选择?
我知道这个问题已经有将近 2 年的历史了,但显然我当时忘记了用我的解决方案关闭它。基本上,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 操作方法中使用,以便我可以获得一些数据服务器端,这当然行不通...
我在 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,其中 returns 一个 404 页面,因为没有参数传递给 MVC 操作。
我有哪些选择?
我知道这个问题已经有将近 2 年的历史了,但显然我当时忘记了用我的解决方案关闭它。基本上,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 操作方法中使用,以便我可以获得一些数据服务器端,这当然行不通...