Razor是一个强大的视图引擎,可以使用C#的强类型,结合HTML进行布局,真的是很方便,但是也有个问题,就是Js调用Razor的变量没问题,但是反过来就有问题,而且问题还不好解决,像以下代码
<script type="text/javascript">
function razortest() {
$.get('@Url.Action("RazorTest")', function (data) {
});
}
</script>
因为想传递参数,然后看了Url.Action方法可以传递参数,public virtual string Action(string actionName, RouteValueDictionary routeValues);用RouteValueDictionary,不过这是C#的类型,如果在这个RouteValueDictionary中使用Js变量,会导致页面报错,看到有解决方案如下
var baseurl = '@Url.Action("Export")';
$('#export').click(function() {
var url = baseurl + '?SelectedAccountType=' + $('#SelectedAccountType').val() + '&FromDate=' + $('#FromDate').val() + '&ToDate=' + $('#ToDate').val() + ...etc
location.href=url;
});
但是如果是使用location.href这种方式,就没法异步加载,与初衷不一样。
其实忽略了一个问题,因为一直想在@Url.Action中传递js参数,导致钻牛角尖了,其实很简单,就是在方法外部加上js变量,
$.get('@Url.Action("RazorTest")' + "?param=" + $("#param").val(), function (data) {
});