我有一個像link text如何指定默認片區Html.BuildUrlFromExpression打電話
問題我所有的鏈接看起來像這樣:// HTP網站/控制器/操作/ ID
我只是添加區域稱爲BackEnd。
我的控制器:
[ActionLinkArea("")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
現在,當我嘗試使用
@Html.ActionLink<HomeController >(c => c.Index(), "Home")
一切工作正常得到一些電腦板URL和URL是HTP://網站/ HomeController中/索引/
但是當我使用的擴展方法從Microsoft.Web.Mvc.dll
@Html.BuildUrlFromExpression<HomeController>(c => c.Index())
我得到URL HTP://網站/ 後端/HomeController中/索引/
ActionLink的如何,我可以得到不使用BuildUrlFromExpression區URL,爲什麼工作正常,但 BuildUrlFromExpression不是?
我只是還拆開Microsoft.Web.Mvc,發現這個代碼VirtualPathData virtualPath = routeCollection.GetVirtualPath(上下文,routeValuesFromExpression);其中routeCollection abd上下文 - 我們從HtmlHelper獲得,routeValuesFromExpression - 從表達式返回值與Area,但routeValuesFromExpression具有正常值。 – 2011-01-10 11:44:56
我找到了答案:http://aspnet.codeplex.com/workitem/7764該方法在內部使用LinkBuilder.BuildUrlFromExpression()。 後者調用 routeCollection.GetVirtualPath(context,routeValues) 而不是 routeCollection.GetVirtualPathForArea(context,routeValues); 使用區域時會導致無效結果。 –
2011-01-10 14:07:36