T4MVC在javascript中的网址:替换路由值

时间:2011-10-26 03:29:58

标签: javascript asp.net-mvc-3 t4mvc

我喜欢使用T4MVC及其强类型的URL,并希望在JS中使用它们,但是有一些问题。 假设我想将一个url加载到div中:

$('#mydiv').load("@Url.Action(MVC.Home.Index())");  //that works

但是如果我的动作是用一些js-attribute值参数化的呢?

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 个答案:

答案 0 :(得分:4)

一般方法可能没问题。对于guid案例,您可以更改:

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

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

这样你可以绕过类型系统,并且可以传递你想要的任何虚拟值。