Asp.net MVC中的重载索引操作

时间:2017-06-01 10:18:18

标签: asp.net-mvc overloading

我正在开发一个多语言网站,我需要先设置语言,然后使用Resources文件以该语言显示页面。

我使用了两个索引动作:

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);

        return View();
    }

    public ActionResult Index() 
    {
        string language="en-us";

        return View(language);


    }


  }
}

但是当我运行页面时,我有这个错误:

  

控制器类型的当前动作请求'索引'   'HomeController'在以下操作方法之间不明确:   类型上的System.Web.Mvc.ActionResult索引(System.String)   global_vrf.Controllers.HomeController System.Web.Mvc.ActionResult   类型为global_vrf.Controllers.HomeController的索引()

2 个答案:

答案 0 :(得分:1)

只需制作一种方法:

 namespace global_vrf.Controllers
 {
    public class HomeController : Controller
    {
       public ActionResult Index(string language)
       {
          if(String.IsNullOrWhiteSpace(language))
          {
             string language="en-us";
          }
          Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
          Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);

          return View();
       }
    }
 }

你无法制作2种方法,因为string可能为空。

答案 1 :(得分:0)

[HttpPost]
public ActionResult Index(string language)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);

    return View();
}

[HttpGet]
    public ActionResult Index() 
    {
        string language="en-us";

        return View(language);


    }