【问题标题】:How to pass ViewData value to Partial View using @url in jquery如何在 jquery 中使用 @url 将 ViewData 值传递给部分视图
【发布时间】:2018-07-09 07:04:26
【问题描述】:

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

<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 函数有什么问题?

【问题讨论】:

  • var url = '@Url.Action("ResultGrid", "User")', new { xEdit : ViewData["Form"] }; 将在 JS 中创建无效输出。如果您检查实际呈现的代码(和控制台),您会看到语法问题。
  • 什么是ViewData["Form"]?这只有在它是一个简单的值时才有效(并且new { .. } 需要与Url.Action() 一起使用)
  • @StephenMuecke 谢谢

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


【解决方案1】:

url 声明在 .NET fiddle 中检查时在语法上是错误的:

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

正确的方法是将路由值参数包裹在UrlHelper.Action helper 中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2010-11-13
    • 2011-10-26
    相关资源
    最近更新 更多