如何在jQuery中使用@url将ViewData值传递给局部视图

时间:2018-07-09 07:04:26

标签: jquery asp.net-mvc asp.net-mvc-5

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

<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 个答案:

答案 0 :(得分:1)

在.NET小提琴中检查时,url声明在语法上是错误的:

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;

两种方式都可以产生网址,如下例所示(ViewData["Form"]必须类似于纯数字或字符串值):

/User/ResultGrid?xEdit=someValue