URL-адреса T4MVC в JavaScript: подставьте значения маршрута - PullRequest
3 голосов
/ 26 октября 2011

Мне нравится использовать 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 по умолчанию слишком длинное.

Какие есть другие решения? Спасибо

1 Ответ

4 голосов
/ 26 октября 2011

Общий подход может быть в порядке.В случае с guid вы можете изменить:

@Url.Action(MVC.Home.Index2(-1))

на

@Url.Action(MVC.Home.Index2().AddRouteValue("id", -1))

Таким образом, вы обойдете систему типов и сможете передать любое фиктивное значение, которое хотите.

...