多语言网站自动由其国家(ASP.NET MVC)自动



我正在尝试使用ASP.NET MVC开发一个多语言网站,该网站应该自动识别客户端国家,然后用他们的语言向网站展示。
我可以获得IP地址,但我找不到他们的国家。我使用了网络服务这是我的控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using System.Globalization;
using global_vrf.GeoIpService;
namespace global_vrf.Controllers
{
public class HomeController : Controller
{
    public ActionResult Index(string language)
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
        string userIpAddress = this.Request.UserHostAddress;
        ViewBag.userIpAddress = userIpAddress;

        GeoIPService service = new GeoIPService();
        GeoIP output = service.GetGeoIP(userIpAddress);
        ViewBag.usercountry = output;
        return View();
    }

 }
}

我在我看来已经写了这篇文章以检查发生了什么

@{
ViewBag.Title = "Home Page";
}
@Resources.Home_txt.AppDes
<br />
@ViewBag.userIpAddress
<br />
@ViewBag.usercountry

这是输出:

93.110.112.199 
global_vrf.GeoIpService.GeoIP  //this line is showing instead of country name.

感谢任何帮助。谢谢

如果@ViewBag.userCountry输出global_vrf.GeoIpService.GeoIP,则意味着您要放入ViewBag成员的东西的 type ,并且该类型没有自定义的ToString超载。当呈现任何给定类型的渲染类型时,Razor将在其上简单地调用ToString,以获取一些实际输出的东西。ToString的默认值是返回类型名称和名称空间。

更有可能,您想做类似的事情:

@{ var userCountry = ViewBag.userCountry as global_vrf.GeoIpService.GeoIP; }
@if (userCountry != null)
{
    @userCountry.Country;
}

Country将是global_vrf.GeoIpService.GeoIP上的属性,实际上拥有您要实际看到输出的国家名称。

请使用GeoiPresult,然后获取乡村名称

  <GetGeoIPResult>
    <CountryName>string</CountryName>
    <CountryCode>string</CountryCode>
  </GetGeoIPResult>

相关内容

  • 没有找到相关文章

最新更新