代码之家  ›  专栏  ›  技术社区  ›  Sathish

如何在jquery中使用@url将viewdata值传递给部分视图

  •  0
  • Sathish  · 技术社区  · 6 年前

    在我的项目中,我需要在单击按钮时传递值部分值。 所以我就这样试了

    <div id="searchgrid" class="col-lg-12">
      @Html.Partial("ResultGrid", new List<SCM_MVC.Models.User>(), 
      new ViewDataDictionary(this.ViewData) { { "index" , xEdit } })
    </div>
    
    <script src="~/assets/js/jquery-1.10.2.js"></script>
    <script>
        var url = '@Url.Action("ResultGrid", "User")', new { xEdit : ViewData["Form"] };
        $('#btnloadgrid').click(function () {
            $('#searchgrid').load(url);
        })
    </script>
    

    同时打开查看其工作情况。但点击按钮不起作用。jquery函数有什么问题?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tetsuya Yamamoto    6 年前

    这个 url 声明在.NET fiddle中签入时语法错误:

    var url = '@Url.Action("ResultGrid", "User")', new { xEdit : ViewData["Form"] };
    //                                             ^ Syntax error: Unexpected token 'new'
    

    正确的方法是将路由值参数包装在 UrlHelper.Action 帮手:

    var url = '@Url.Action("ResultGrid", "User", new { xEdit = ViewData["Form"] })';
    

    如果从客户端变量传递的值为:

    var viewData = '@ViewData["Form"]';
    
    var url = '@Url.Action("ResultGrid", "User")?xEdit=' + viewData;
    

    两种方法都会生成如下示例所示的url( ViewData["Form"] 必须是纯数字或字符串值):

    /User/ResultGrid?xEdit=someValue