如何更改区域管理员

时间:2013-10-30 07:37:13

标签: c# asp.net asp.net-mvc nopcommerce

这是客户要求,他不希望管理面板看起来像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中映射,我的意思是插件是在插件文件夹和nop.web / 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. 点击管理员/税务/提供商页面上Tax.CountryStateZip的配置链接后,以这种方式进行案例或原始源控制流程

  3. 1 -     nopCommerce_3.00_Source \演示\ Nop.Web \管理\视图\税\ 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页面我有检查

1 个答案:

答案 0 :(得分: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**" } }))",

所有路由区域的插件=&#34; admin&#34;

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