如何将CultureInfo传递给部分View以进行ajax调用?

时间:2011-09-08 05:37:37

标签: asp.net-mvc

我有一个viewpage和partview。对于默认请求 - 何时调用页面 - CultureInfo在viewPage的基类中设置。我创建了这个自定义基类,它根据cookie初始化文化,并做一些其他的东西。视图页面上有一个搜索按钮,它使用Ajax调用(jquery Ajax调用)更新页面上的局部视图。此部分视图更新调用有单独的操作,它返回部分视图。问题是局部视图没有任何基类,当资源显示在部分视图上时,它们显示为默认文化,而不是当前文化。从jQuery Ajax调用调用部分视图时,设置cultureInfo的最佳方法是什么?

我有这个mvc应用程序作为更大的现有应用程序的一部分(区域),所以我无法触及session_start。

2 个答案:

答案 0 :(得分:2)

我不确定为什么你需要传播文化,你不能使用辅助方法直接从PartialView获取它吗?

@YourApp.CultureHelper.GetCurrentCulture()

只是打电话

public static string GetCurrentCulture()
{
   return Thread.CurrentThread.CurrentCulture.Name;
}

如果您正在进行国际化和ASP.NET MVC的任何工作,我强烈建议您阅读这两篇优秀帖子Nadeem Afana

写得非常好,并解释了您需要了解的有关国际化的所有信息。

答案 1 :(得分:1)

您可以将文化信息作为带有string数组的模型发送到部分视图。

我猜你已经处理了ajax调用,所以我只是告诉你传递值的方法。下面是你的控制器:

public ActionResult Index() { 

    return PartialViewResult("samplePartial", new string[] { "en" });

}

这是你的部分观点:

@model string[]

@if(Model[0] == "en") { 

    @:Culture is "en"

} else { 

    @Culture is different than "en"

}

此外,这也可以在您的视图中呈现,如下所示:

@Html.Partial("samplePartial", new string[] { "en" })