【问题标题】:Run script inside View after Document Loads - ASP.NET MVC3文档加载后在视图中运行脚本 - ASP.NET MVC3
【发布时间】:2013-11-06 19:58:01
【问题描述】:

我的视图中有以下代码:

 @if (TempData["Success"] != null)
  {
    if ((bool)TempData["Success"] == true)
      {
       <script type="text/javascript">@Html.Raw("ShowUIModal('Success','Message Successfully Sent!');") </script>
      }
    else
      {
       <script type="text/javascript">@Html.Raw("ShowUIModal('Message sending Failed!!', 'Please try again!');") </script>
      }
  }

在 chrome 控制台中,它会记录 -“Object [object Object] 没有方法‘modal’”。我知道它在那里是因为在执行上述代码时没有加载 jquery-ui.js,因为当我在视图加载后单独运行此代码时,它工作正常:

ShowUIModal('Message sending Failed!!', 'Please try again!');   // it works fine after page loads.

那么,加载完所有的js文件后如何执行呢?非常感谢您,感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    您可以尝试做的是,由 TempData 对象设置一个隐藏的输入及其数据成功属性,然后您可以通过 Jquery 或 DOM 上的 JavaScript 检索它并显示您的模态弹出窗口。

    <input type = "hidden" id="Status" data-success = @TempData["Success"]></input>
    

    在页面头部的脚本标签中,

    <script>
    $(document).ready(function(){
    var status = $('#Status').attr('data-success');
    if(status == true){
    // Your - ShowUIModal() here
    }
    else
    {
    // Your else code here
    }
    });
    </script>
    

    【讨论】:

    • 感谢您的技巧,稍作修改就完成了!它导致模态每次都弹出,因此我将它包装在一个函数中,因此变量保持关闭状态并检查'status.length'是否大于0(如果隐藏输入存在)并且它的工作就像一个魅力。 ..谢谢队友:)
    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多