将来自JavaScript函数的数据作为对象参数传递给@ Html.Action()C#

时间:2019-07-03 20:14:51

标签: javascript c# html asp.net razor

这就是我想要做的。我希望能够调用html动作并将一些数据作为对象参数传递。唯一的事情是此数据需要从javascript函数返回。

这就是我想要做的:

@Html.Action("someAction", "someController", new { passedData = GetDropDownData() })

<script>
    function GetDropDownData() {
        var data = "test";
        return data;
    }
</script>

基本上,我试图将一些下拉数据从控件传递到使用@ Html.Action()呈现的局部视图。我希望能够以某种方式将此字符串传递给局部视图,所以我想我可以使用JS提取下拉数据并在呈现页面时将其作为对象参数返回?

如果您有任何建议或更好的解决方法,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是不可能的,因为剃刀视图是在服务器端编译的,而javascript是客户端。因此,视图已被编译,而javascript在运行时运行。一种方法是使用ajax将javascript中的变量作为查询参数或主体值传递给控制器​​中的操作。您可以通过创建按钮或链接来实现:

<a href='#' id='clickMe'>Click me</a>

并连接jQuery完成这项工作:

<script>
$(document).ready(function(){

   $('#clickMe').click(function(){

      $.ajax({
         type: "POST",
         url: '@Url.Action("Action", "Controller")',
         data: {
            passedData: GetDropDownData()
         },
         success: function(response){
             $('#placeholderForPartialView').html(response);
         }
      });
   });
});
</script>

根据您的方法(GET或POST)类型,看起来像这样。 在这里,我假设您返回部分视图,并将#placeholderForPartialView div的内容替换为返回的视图。如果我错了,请纠正我。