如何将Viewdata添加到我的Javascript中?

时间:2014-05-02 12:58:07

标签: javascript asp.net-mvc

我有ASP.NET MVC项目。我在我的控制器中调用一个存储过程并将该结果导入我的viewdata:

 var sp = callsp(parameter1, paramter2)

 if(abovespcontainsnoresult)
 {
       viewdata["result"] = "This sp doesn't consists any results";
    }

现在我必须将它传递给我的脚本函数。我有脚本,当我从下拉列表中选择列表时启用按钮:

  $(document).ready(function () {
     $("#button").change(function (e) {

         if ($(this).val() != '')  {
             $("#button1").attr('disabled', false);
             $("#button2").attr('disabled', false);
             $("#button3").attr('disabled', false);
             $("#button4").attr('disabled', false);
         }
      }

现在我要做的是将viewdata结果添加到此脚本并检查它是否为null。我试过这样:

 $(document).ready(function () {
     $("#button").change(function (e) {

          if ($(this).val() != '' &&  ($(@ViewData["result"].ToString()) != "")) 
        {
             $("#button1").attr('disabled', false);
             $("#button2").attr('disabled', false);
             $("#button3").attr('disabled', false);
             $("#button4").attr('disabled', false);
         }
      }

但是如果添加这个条件,脚本就不起作用了。那么如何在我的脚本中检查viewdata结果并检查它是否为空?

2 个答案:

答案 0 :(得分:2)

如果你把滴答滴答,它会起作用。

 '@ViewData[result]'

如果是外部JS文件(脚本未在视图中编码),则无法正常工作

答案 1 :(得分:2)

$(ViewData["result"].ToString())的值存储到JavaScript变量中,然后在if语句中使用该变量。

$(document).ready(function () {
    $("#button").change(function (e) {
        var result = $('@ViewData["result"].ToString()');

        if ($(this).val() != '' && result !== '') 
        {
             $("#button1").attr('disabled', false);
             $("#button2").attr('disabled', false);
             $("#button3").attr('disabled', false);
             $("#button4").attr('disabled', false);
         }
      }

你最初是在正确的轨道上。