asp.net mvc中Razor和Js的变量交互问题
kelvin 发布于 2021-06-30

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) {
             
            });
kelvin
关注 私信
文章
92
关注
0
粉丝
0