我正在制作一个全球化的asp.net mvc解决方案。如何在MVC3中使用视图全球化的级联下拉列表
我已经实现了全球化使用资源文件(Resources.fr.resx & Resources.nl.resx)和
routes.MapRoute(
"Default",
"{language}/{controller}/{action}/{id}",
new { language="Nl", controller = "Home", action = "Index", id = UrlParameter.Optional },
new { language ="Nl|Fr" }
);
现在我要让2个级联dropdownlists,像这样的东西:
$('#ddl_Author').change(function() {
var ddlsource = "#ddl_Author";
var ddltarget = "#ddl_Books";
$.getJSON('@Url.Action("Books")', { authorId: $(ddlsource).val() }, function (data) {
$(ddltarget).empty();
$.each(data, function (index, optionData) {
$(ddltarget).append("<option value='" + optionData.Value + "'>" + optionData.Text + "</option>");
});
});
});
我的问题是我有什么作为URL中使用“@ Url.Action(‘书’)”似乎并没有工作...
这是我的控制器:
public ActionResult Books(int authorId)
{
var books = _bookService.GetBooks(authorId);
...
return Json(books.ToList(), JsonRequestBehavior.AllowGet);
}
问题是我想让程序使用当前正在使用的语言。 这似乎工作: window.location +“/ Books” 但我不总是工作.. @ – Velter 2011-03-15 11:08:21
@Velter,你可以从当前路线抓住它:'@ Url.Action(“Books”,new {language = ViewContext.RouteData.GetRequiredString(“language”)})'。不要使用带'window.location'和javascript的字符串连接来生成url,它可能不适用于所有情况。 – 2011-03-15 11:13:28