如何将ViewData从Controller传递给我的JS

时间:2015-05-15 18:50:37

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

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

控制器:

texture(material.diffuse, TexCoords.xy)

视图(剃刀):

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

当我调试View时,我能够看到过滤器中的数据,但是如何在文档就绪函数中将其传送给我的JS。

JAVASCRIPT:

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

}

我在布局中渲染了我的js而不是在我的剃刀视图中使用标记

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

2 个答案:

答案 0 :(得分:0)

经过几次尝试后,我发现这是访问我的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);
    };

答案 1 :(得分:-1)

使用以下:

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

可能这个会帮助你。

  

Solution 1

     

Solution 2