【问题标题】:How to pass ViewData from Controller to my JS如何将 ViewData 从控制器传递到我的 JS
【发布时间】:2015-05-21 00:14:25
【问题描述】:

我有以下场景,我将数据从控制器传递到视图

控制器:

  public ActionResult Create(string ID)
        {
            if (ID!= null)
            {
                int nid = Convert.ToInt32(ID);
                DataWiz NDW = new DataWiz();
                ViewData["Filter"] = NDW.Filter(nid);
            }
            return View();
        }

查看(剃刀):

    @{
            var Filter = ViewData["Filter"];
    }
@section Create(//this is rendered in from Layout)
    {
    <script src="@Url.Content("~/Scripts/Create.js")" type="text/javascript"></script>

}

当我调试视图时,我可以在 Filter 中看到数据,但是如何在文档就绪函数中将其发送给我的 JS。

JAVASCRIPT:

$(document).ready(function () {
    var test = '<%= ViewData["Filter"] %>';
    });

我的 js 是从 Layout 渲染的,并且没有在我的 razor 视图中使用标签

这是从控制器获取 VIEWDATA 到 JS 的正确方法吗?如果是,我做错了什么?

【问题讨论】:

标签: javascript asp.net-mvc-4 razor viewdata


【解决方案1】:

经过几次尝试,我发现这是在我的 JS 中访问 ViewData 或 ViewBag 的一种方式

我使用了如下的 KO JS optionsAfterRender

查看

<select  data-bind="options: SubType, value: selectedSubType, optionsValue:'SubTypeID', optionsText:'SubTypeDescription',optionsAfterRender:function(){setOptionST(@Filter.SubTypeID);}"></select>

JS

在视图模型中

 self.setOptionST = function (x) {
        //here we can do whatever is intended to in my case to set the initial value in dropdown
        self.selectedSubType(x);
    };

【讨论】:

    【解决方案2】:

    在下面使用:

    <script type="text/javascript">
        var test = <%= serializer.Serialize(ViewData["Filter"]) %>;
    </script>
    

    或者

    也许这个可以帮助你。

    Solution 1

    Solution 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2013-12-09
      • 1970-01-01
      相关资源
      最近更新 更多