我写了sitemap.config。
<siteMapNode title="Shipping rate" nopResource="Admin.Configuration.Shipping.Rate" controller="Shipping" action="ConfigureProvider?systemName=Shipping.ByWeight" />
</siteMapNode>
这是我想要调用的运输控制器功能。
public ActionResult ConfigureProvider(string systemName)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageShippingSettings))
return AccessDeniedView();
var srcm = _shippingService.LoadShippingRateComputationMethodBySystemName(systemName);
if (srcm == null)
//No shipping rate computation method found with the specified id
return RedirectToAction("Providers");
var model = srcm.ToModel();
string actionName, controllerName;
RouteValueDictionary routeValues;
srcm.GetConfigurationRoute(out actionName, out controllerName, out routeValues);
model.ConfigurationActionName = actionName;
model.ConfigurationControllerName = controllerName;
model.ConfigurationRouteValues = routeValues;
return View(model);
}
但错误" A potentially dangerous Request.Path value was detected from the client (?) "
我该如何解决它。
答案 0 :(得分:1)
您无法通过NOPCommerce中的siteMap.cofig将任何参数传递给操作,因为如果您在 siteMapNode 的Action属性中使用参数编写操作名称,则认为这是操作名称。 因此,如果想要使用参数调用任何操作,则为其创建一个新的Action并从中重定向。
//In Site Map
<siteMapNode title="Shipping rate" nopResource="Admin.Configuration.Shipping.Rate" controller="Shipping" action="SomeAction"/>
//In Shipping Controller
public ActionResult SomeAction()
{
return RedirectToAction("ConfigureProvider", new { systemName = "Shipping.ByWeight" });
}
public ActionResult ConfigureProvider(string systemName)
{
}
通过这种方式,您可以召集您的行动。