I wie link text wie dieseWie Standardbereich angeben Html.BuildUrlFromExpression
Alle meine Links suchen haben Problem zu nennen: htp // site/controller/action/id
I Gebiet genannt gerade hinzugefügt BackEnd.
Mein Controller:
[ActionLinkArea("")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Jetzt, wenn ich versuchen, einige conroller URL zu erhalten mit
@Html.ActionLink<HomeController >(c => c.Index(), "Home")
Alle funktioniert gut, und URL ist htp: // site/Homecontroller/Index/
Aber wenn ich Erweiterungsmethode von Microsoft.Web.Mvc.dll
@Html.BuildUrlFromExpression<HomeController>(c => c.Index())
ich URL htp: // site/BackEnd/Homecontroller/Index/
Wie kann ich URL ohne Fläche mit BuildUrlFromExpression bekommen und warum Action nicht in Ordnung, aber BuildUrlFromExpression funktioniert?
Ich habe gerade Microsoft.Web.Mvc zerlegt und festgestellt, dass dieser Code VirtualPathData virtualPath = routeCollection.GetVirtualPath (Kontext, routeValuesFromExpression); Wo routeCollection abd context - wir bekommen von HtmlHelper, und routeValuesFromExpression - aus Ausdruck Rückgabewert mit Area, aber routeValuesFromExpression hat normalen Wert. –
Ich habe die Antwort gefunden: http://aspnet.codeplex.com/workitem/7764 Die Methode verwendet intern LinkBuilder.BuildUrlFromExpression(). Letzterer ruft routeCollection.GetVirtualPath (context, routeValues) anstelle von routeCollection.GetVirtualPathForArea (context, routeValues); verursacht ungültige Ergebnisse bei der Verwendung von Bereichen. –