这是客户要求,他不希望管理面板看起来像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 - 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
页面我有检查
答案 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项目