2017-06-01 59 views
0

我正在使用多語言網站,我需要先設置語言,然後使用資源文件以該語言顯示頁面。Asp.net MVC中的重載索引操作

我用了兩個索引操作是這樣的:

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


    } 


    } 
} 

但是當我運行的頁面,我有這樣的錯誤:

The current request for action 'Index' on controller type 'HomeController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Index(System.String) on type global_vrf.Controllers.HomeController System.Web.Mvc.ActionResult Index() on type global_vrf.Controllers.HomeController

+0

發生這種情況是因爲您具有相同的名稱操作方法。爲了避免這種情況,你必須在每個方法之前使用[HTTPGet]和[HTTPPost]。 –

+1

刪除第二種方法。在第一種方法中,如果'language'的值是'null',那麼將它設置爲'「en-us」' –

+0

@StephenMueckethank你太多了,teo van kot建議相同,並且工作正常 –

回答

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可能爲null。

+0

謝謝好主意,我正在努力,我會讓你知道,如果這個工程 –

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


    } 
+0

感謝您的關心,錯誤更改爲'The view'en-us'或其主人未被發現'我認爲我需要在這一行中進行一些更改'return View(language);' –

+0

您必須使用@model字符串作爲第一行。我認爲你已經有了觀點 –

+0

是的,我有一個簡單的視圖,沒有什麼重要的,沒有區別,我的意思是我需要像這樣'返回RedirectToAction(「索引」,「家」,新{語言=語言}) ;' –