0
我有我的網站上的城市名單,這個名單擺在的Site.Master,看起來像:ASP.NET MVC:城市名單和存儲選擇的城市中的cookie
<a id="<%= selectedCity.CityId %>"><%= selectedCity.Name %></a>
<ul>
...
<li id="<%= city.CityId %>" >
<%= Html.ActionLink(city.Name,"ChangeCity",new{ newCityId = city.CityId })%>
</li>
...
</ul>
接下來,我所有的控制器是基於從BaseController,它包含下面的代碼:
public int CityId {get;set;}
protected override void OnActionExecuting(ActionExecutingContext filterContext){
if (filterContext.ActionDescriptor.ActionName.ToLower() != "changecity"){
this.CityId = Convert.ToInt32(Request.Cookies["SiteCityId"]);
var city = LoadCity(this.CityId);
var cities = LoadAllCities();
CitiesModel model = new CitiesModel() { selectedCity=city, allCities=cities};
ViewData["citiesModel"] = city;
}
else{
Response.Cookies["SiteCityId"]=filterContext.ActionParameters["newCityId"];
}
}
在我所有的控制器,我補充下一個動作:
[HttpGet]
public ActionResult ChangeCity(string newCityId)
{
return RedirectToAction(this.MyDefaultAction);
}
主要闕stion:這個模式不是很好的工作。在IE8有時我不能改變當前的城市使用鏈接,如下:
http://www.mysite.com/home/changecity/?newCityId=3
你對這個模式有什麼看法?可能你使用其他方法來創建功能?