【问题标题】:Can I pass the viewbag value to the jQuery in mvc2我可以将viewbag值传递给mvc2中的jQuery吗
【发布时间】:2011-09-25 03:56:06
【问题描述】:

我需要使用 viewbag 将值传递给视图中的 jQuery。我想要实现的是传递 null 或某个值,然后 jQuery 应该根据传递的值隐藏或显示 div,例如如下所示:

viewbag.testNumber = null;
 $('#showdiv').hide();
  $('viewbag.testNumber').value == someinteger{

    $("#showdiv").show();
    else
    $("#showdiv").hide();
});
   <div id="showdiv"> Some Calculation </div>

如果值为 null ,我还想禁用视图中的 viewbag ,因为它会给出 null 错误

【问题讨论】:

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


    【解决方案1】:

    如果您使用MVC3(不适用于2),您可以轻松使用ViewBag,如​​下所示,但请记住两点容易忘记并可能导致头痛:

    1. 切勿在@ViewBag.myVariable 末尾添加分号
    2. 如果您在 @ViewBag.myVariable 前后传递字符串 put "。例如:

    这是对的:

    $(function () {
        var path = "@ViewBag.helpPath"
        path = "@Url.Content("~/route/action/")" + path;
        $('#help-content').load(path);
    
    });
    

    但是如果你使用:

    $(function () {
        var path = @ViewBag.helpPath
        path = "@Url.Content("~/route/action/")" + path;
        $('#help-content').load(path);
    
    });
    

    MVC 将其更改为:

    $(function () {
        var path = c:\\doc\\path
        path = "@Url.Content("~/route/action/")" + path;
        $('#help-content').load(path);
    
    });
    

    哪个 JavaScript 无法解析它,结果将是一些丑陋的错误。只是我做了一些事情,浪费了我的时间想分享它。

    【讨论】:

    • 删除@ViewBag.variable 末尾的分号确实使一切不同。我有一个像“
      We've deleted your account!
      ”这样的字符串,如果我使用双引号将变量括起来,它期望在 >> id=" > We'
    • 而且我还必须将变量用单引号括起来,否则它会再次损坏!哇,这些混合 razor 和 js 的细微差别非常可笑。 var html = '@ViewData["ViewResult"]'
    【解决方案2】:

    ViewBag 仅在 ASP.NET MVC 3 中,因此您不能使用它,但您可以使用 ViewData:

        $('#showdiv').hide();
          if ($("#" + '<%=ViewData["testNumber"]').value == someinteger){      
             $("#showdiv").show();
           }
            else {
                $("#showdiv").hide();
            }
        });
           <div id="showdiv"> Some Calculation </div>
    

    【讨论】:

      【解决方案3】:

      在剃须刀中,您只需执行 @ViewBag.Variable_Name 。我在我的代码中这样做。

      【讨论】:

      • 如果viewbag的值为null,你可以禁用它吗因为如果null的值传递给viewbag,它不会绑定
      • mvc2 没有 ViewBag afaik。您必须使用 ViewData。您可以先检查 ViewData 中是否存在密钥,然后执行 javascript 是否明智地执行其他操作?
      【解决方案4】:

      你可以在你的视图中这样做:

      $('#showdiv').hide();
        $('@Viewbag.testNumber').value == someinteger{
      
          $("#showdiv").show();
          else
          $("#showdiv").hide();
      });
         <div id="showdiv"> Some Calculation </div>
      

      【讨论】:

        【解决方案5】:

        对于您的 MVC2 JavaScript,只需直接写出变量,显然您不能使用 ViewBag:

        var testNumber = <%:ViewData["VariableName"]%>;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-02
          • 1970-01-01
          • 2013-10-08
          • 1970-01-01
          • 1970-01-01
          • 2023-03-25
          相关资源
          最近更新 更多