URL-адреса T4MVC в JavaScript: подставьте значения маршрута
Мне нравится использовать T4MVC и его строго типизированные URL-адреса, и я хочу использовать их в JS, но у меня есть некоторые проблемы. Допустим, я хочу загрузить URL в div:
$('#mydiv').load("@Url.Action(MVC.Home.Index())"); //that works
Но что, если мое действие параметризовано некоторым значением js-атрибута?
public ActionResult Index2(int id){}
var id = $('#mydiv').attr('index');
$('#mydiv').load("@Url.Action(MVC.Home.Index2(id))"); //this certainly doesn't work, since "id" is a JS variable
$('#mydiv').load("@Url.Action(MVC.Home.Index2(-1))".replace("-1", id)); //this is a workaround I use now, but don't like it :)
Однако, если мой параметр не int, а Guid, обходной путь становится уродливым, поскольку значение guid-default слишком велико.
Каковы другие решения? Спасибо
1 ответ
Решение
Общий подход может быть в порядке. В случае с guid вы можете изменить:
@Url.Action(MVC.Home.Index2(-1))
в
@Url.Action(MVC.Home.Index2().AddRouteValue("id", -1))
Таким образом, вы обойдете систему типов и сможете передать любое фиктивное значение, какое захотите.