這是我在ASP.NET MVC(MVC3)中的第一個項目,我在處理所有事情方面遇到了很多麻煩。根據選擇的語言,我的所有文字都將從數據庫中選擇。對於這種語言選擇,我更喜歡使用Session變量。我需要一個圖像鏈接到語言,所以我寫了下面幾行到.cshtml頁面。Asp.NET MVC3錯誤請求
@using (Html.BeginForm()) {
<a href='<%: Url.Action("Index", "Home", new { lang="Tr" }) %>'>
<img src="../../Content/Images/flag_tr.jpg" width="40" height="20" />
</a>
<a href='<%: Url.Action("Index", "Home", new { lang = "En" }) %>'>
<img src="../../Content/Images/flag_en.jpg" width="40" height="20" />
</a>
}
而在的HomeController:
public ActionResult Index()
ViewBag.Message = "Welcome to ASP.NET MVC!";
ViewBag.Selected = "Not yet selected";
return View();
}
[HttpPost]
public ActionResult Index(String lang)
{
if (lang == "Tr")
{
System.Web.HttpContext.Current.Session["Language"] = "Tr";
}
else if (lang == "En")
{
System.Web.HttpContext.Current.Session["Language"] = "En";
}
ViewBag.Selected = System.Web.HttpContext.Current.Session["Language"];
return View();
}
當我點擊一個鏈接的標誌,我得到的 「HTTP錯誤400 - 錯誤的請求。」有人可以告訴我我做錯了什麼,或者我該怎麼做?
P.S .:我也試過沒有窗體,添加一個新的功能到控制器名爲郎並從那裏重定向到索引,但沒有成功。
非常感謝!關於HttpGet;我放置HttpGet而不是HttpPost,我可以得到Tr和Eng作爲輸出,但我現在沒有獲得原始的Index()功能。對不起,我缺乏知識我對C#很陌生,可以假設[HttpGet]是Java中的@Override形式嗎? –
請參閱我的編輯控制器操作示例。我也會編輯你的問題的標題,因爲它與'Session'無關。 –