从MVC区域访问MVC控制器

时间:2013-09-25 14:00:53

标签: asp.net-mvc asp.net-mvc-areas asp.net-mvc-controller

我有带文化选择器控件的页面。此控件在“布局”页面上呈现为部分控件。

@Html.Partial("~/Views/Shared/CultureChooserUserControl.cshtml")

文化选择器控件如下所示:

@Html.ActionLink("English", "ChangeCulture", "Default",  new { lang = "en", returnUrl =     this.Request.RawUrl }, new { @class = "englishFlagButton" })
@Html.ActionLink("Deutsch", "ChangeCulture", "Default",  new { lang = "de", returnUrl = this.Request.RawUrl }, new { @class = "germanFlagButton" })
@Html.ActionLink("French", "ChangeCulture", "Default",  new { lang = "fr", returnUrl = this.Request.RawUrl }, new { @class = "frenchFlagButton" })
@Html.ActionLink("Italian", "ChangeCulture", "Default",  new { lang = "it", returnUrl = this.Request.RawUrl }, new { @class = "italianFlagButton" })

文化更改方法位于页面的默认控制器中,当我想要更改文化时,它会提供以下内容:

http://localhost/myapp/Default/ChangeCulture......

现在我将我的网站与区域分开,问题是当我在某个区域尝试更改文化时,请求错误并导致错误:

http://localhost/myapp/**AREA/Default**/ChangeCulture.....

我该如何解决这个问题。感谢您的支持。

弗兰克。

1 个答案:

答案 0 :(得分:2)

当您的布局使用所有区域并且文化更改操作在默认区域的控制器中时,然后在所有帮助此操作的帮助程序中的routeValues对象区域中设置布局=“”,例如:

@Html.ActionLink("English", "ChangeCulture", "Default",  new { lang = "en", returnUrl = this.Request.RawUrl, @area = "" }, new { @class = "englishFlagButton" })