【问题标题】:Access variables inside JQuery dialog访问 JQuery 对话框中的变量
【发布时间】:2014-03-14 05:29:39
【问题描述】:

我在 viewBag 中有一个用户 ID 我想在我的对话框中访问 ViewBag

<script>
    $(function () {
        $("#dialog").dialog({
            autoOpen: false,
            modal: true,
            width: 339,
            overlay: {
                backgroundColor: 'red',
                opacity: 0.5
            },
            show: {
                effect: "blind",
                duration: 500
            },
            hide: {
                effect: "explode",
                duration: 700
            }
        });
    });

    function OpenDialog()
    {
        $('#dialog').dialog("open");
    }
</script>

<div id="open" onclick="OpenDialog();">Click To Open</div>  

  @ViewBag.UserID
    <div id="dialog">   
            <table>
                <tr>
                    <td>User ID</td>
                    <td>@ViewBag.UserID</td>
                </tr>
                <tr>
                    <td>Comments</td>
                    <td>@Html.TextArea("CommentsTextBox")</td>
                </tr>
            </table>
            <div class="alignCenter"> 
                 <input type="submit" value="Add" /> 
                 <input type="button" value="Cancel" /> 
            </div>
    </div>

【问题讨论】:

  • 您的问题/问题是什么?
  • 当我打开 JQuery 对话框时 @ViewBag.UserID 显示空/空值。但外部 @ViewBag.UserID 显示正确的用户 ID
  • 您的代码似乎没有任何异常,正确的问题必须是不同的东西
  • 除了空的 UserID 之外,对话框是否正确显示?

标签: jquery asp.net-mvc dialog viewbag


【解决方案1】:

您的代码应该可以运行,但可能是 Jquery 对话框更改了 div &lt;div id="dialog"&gt; 的 dom 元素值

您可以尝试以下方法。

将 UserId 保留在隐藏字段中。

<input type="hidden" id="userId" value="@ViewBag.UserID" />

&lt;div id="dialog"&gt;中为UserId制作占位符

<div id="dialog">
    <table>
        <tr>
            <td>User ID</td>    
            <td><span id="dialogUserId"></span></td>
        </tr>
    </table>
</div>

获取 UserId 并在 OpenDialog() 事件中分配表单占位符。

<script>
function OpenDialog()
    {
        $("#dialogUserId").val($("#userId").val()); //if this won't work try adding this line after dialog("open")
        $('#dialog').dialog("open");
    }
</script>

【讨论】:

    【解决方案2】:

    如果你只是想在 jquery 中访问你的 Model 变量或 ViewBag,你可以尝试以下方式。

    <script type="text/javascript">
    
        function set(value) {
            return value;
        }
    
        alert(set(@Html.Raw(Json.Encode(Model.Message)))); // Message set from controller
        alert(set(@Html.Raw(Json.Encode(ViewBag.UrMessage))));
    
    </script>
    

    谢谢

    【讨论】:

      【解决方案3】:

      做一件事,将您的用户 ID 放在普通的 java 脚本变量中,并在文档准备好时通过 J 查询获取位置值

      【讨论】:

      • 你能举个例子吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 2015-07-21
      相关资源
      最近更新 更多