2

我正在制作一个全球化的 asp.net mvc 解决方案。

我已经使用资源文件(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 个级联下拉列表,如下所示:

$('#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("Books")' 似乎不起作用......

这是我的控制器:

public ActionResult Books(int authorId)
{
     var books = _bookService.GetBooks(authorId);
     ...
     return Json(books.ToList(), JsonRequestBehavior.AllowGet);
}
4

2 回答 2

3

您需要指定语言,因为它不是您路线中的可选参数:

@Url.Action("Books", new { language = "Fr" })
于 2011-03-15T11:02:14.713 回答
0

@达林·迪米特洛夫

这种方法是否应该优于使用 XMLDataSource 对下拉菜单进行本地化的方法?

于 2012-08-27T06:35:49.730 回答