1

这是客户要求,他不希望管理面板看起来像www.abc.com/admin/..,但希望www.abc.com/eSales/我们在adminAreaRegistration页面上进行相应更改,但问题从插件开始,目前 CountryState税收插件导致问题

.../eSales/Tax/ConfigureProvider?systemName=Tax.CountryStateZip

路由表中没有路由与提供的值匹配。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:路由表中没有路由与提供的值匹配。

源错误:

Line 12: @if (!String.IsNullOrEmpty(Model.ConfigurationActionName))
Line 13: {
Line 14:     @Html.Action(Model.ConfigurationActionName, Model.ConfigurationControllerName, Model.ConfigurationRouteValues);
Line 15: }
Line 16: else

现在的问题是如何更改“管理员”?我们缺少什么?文件在那里并且在 Nop 中映射,我的意思是插件构建在 Plugin 文件夹以及 nop.web/Plugins 文件夹中的名称,并且 Plugins[Projects for plugin] 文件夹与我们得到的相同用 Nop 下载。

换句话说,我检查了它与 http://www.nopcommerce.com/docs/77/how-to-write-a-nopcommerce-plugin.aspx中所说的相同

有趣的是,当我运行 RAW NOP 并且参数中的调试值看起来相同时。

什么问题?

我发现的更多东西

  1. 我正在使用 nop 3.00 [nopCommerce_3.00_Source]
  2. 在我单击 Admin/Tax/Providers 页面上的 Tax.CountryStateZip 的配置链接后,如果或原始源代码控制流程以这种方式进行

1 - nopCommerce_3.00_Source\Presentation\Nop.Web\Administration\Views\Tax\ConfigureProvider.cshtml

@Html.Action(Model.ConfigurationActionName, Model.ConfigurationControllerName, Model.ConfigurationRouteValues);

然后


2 -

nopCommerce_3.00_Source\Presentation\Nop.Web.Framework\Localization\LocalizedRoute.cs

public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)

在这里,它循环了很多次,而且一直在循环data=null


然后

nopCommerce_3.00_Source\Plugins\Nop.Plugin.Tax.CountryStateZip\Controllers\TaxCountryStateZipController.cs

protected override void Initialize(System.Web.Routing.RequestContext requestContext)

现在,如果您考虑我的部分,admin=eSales除了区域外,我的所有值都是相同的,我已经检查断点,但是在第二步之后我得到了错误

"No route in the route table matches the supplied values."

和控制流停止,我不知道为什么?有什么用“管理员”字硬编码的东西我需要改变吗?

如果您能帮我解决它,那就太好了,我在 Nop 并不太老,所以可能是一些小错误导致了这个问题,

有趣的是,我发现所有配置基础插件都得到了admin/plugin我检查过的相同问题页面

4

1 回答 1

0

这是因为 Tax.CountryStateZip 正在路由到管理员...所以如果您要更改 AdminAreaRegistration 并用不同的名称命名它,您必须修改所有路由到管理区域的插件...例如,如果您希望 Tax.CountryStateZip 工作..您必须替换以下路线中的区域:

$(document).ready(function() {
   $("#@Html.FieldIdFor(model => model.AddCountryId)").change(function() {
       var selectedItem = $(this).val();
       var ddlStates = $("#@Html.FieldIdFor(model => model.AddStateProvinceId)");
       $.ajax({
           cache: false,
           type: "GET",
           url: "@(Url.Action("GetStatesByCountryId", "Country", new RouteValueDictionary() { { "area", "**Admin**" } }))",
           data: { "countryId": selectedItem, "addAsterisk": "true" },
           success: function(data) {
               ddlStates.html('');
               $.each(data, function(id, option) {
                   ddlStates.append($('<option></option>').val(option.id).html(option.name));
               });
           },
           error: function(xhr, ajaxOptions, thrownError) {
               alert('Failed to retrieve states.');
           }
       });
   });
});

并将其替换为您希望的名称:

url: "@(Url.Action("GetStatesByCountryId", "Country", new RouteValueDictionary() { { "area", "**YOUR_NEW_ADMIN_AREA_NAME**" } }))",

所以所有路由 area="admin" 的插件

然后你必须重新编译 nopCommerce 项目

于 2014-04-18T22:36:02.540 回答