我喜欢使用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值太长了。
其他解决方案是什么? 感谢
答案 0 :(得分:4)
一般方法可能没问题。对于guid案例,您可以更改:
@Url.Action(MVC.Home.Index2(-1))
到
@Url.Action(MVC.Home.Index2().AddRouteValue("id", -1))
这样你可以绕过类型系统,并且可以传递你想要的任何虚拟值。