javascript中的T4MVC URL:替换路由值

javascript中的T4MVC URL:替换路由值,javascript,asp.net-mvc-3,t4mvc,Javascript,Asp.net Mvc 3,T4mvc,我确实喜欢使用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.Actio

我确实喜欢使用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默认值太长

其他的解决方案是什么?
谢谢

一般方法可能还可以。对于guid情况,您可以更改:

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


通过这种方式,您可以绕过类型系统,并可以传递您想要的任何伪值。

谢谢,这是一种好方法,但如果参数名称发生更改,它将停止工作。.是的,您将丢失T4MVC值的一小部分。但我不确定你能做得更好。当完全使用T4MVC时(如第一行所示),它将强制使用参数类型,而您显然试图使用错误的类型:)
@Url.Action(MVC.Home.Index2().AddRouteValue("id", -1))