Я проголосовал за ответ nemesv, потому что он дал мне объяснение о том, что происходит.У меня есть проекты MVC3 и MVC4, и это меня бесит.
Однако у меня есть другое решение.Переопределите метод Initialize в классе Controller:
public abstract class BaseController : Controller
{
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
string languageId = "en";
try{
// all your code here. You have access to all the context information,
// like querystring values:
string languageId = requestContext.HttpContext.Request.QueryString["lang"];
Thread.CurrentThread.CurrentUICulture =
CultureInfo.CreateSpecificCulture(languageId);
}
finally
{
Thread.CurrentThread.CurrentUICulture =
CultureInfo.CreateSpecificCulture(languageId);
}
base.Initialize(requestContext);
}
}
Затем в вашем проекте просто сделайте так, чтобы ваши контроллеры наследовали от BaseController, и все, вызов BaseController работает автоматически, передавая контекст запроса.Работает как для MVC3, так и для MVC4.