$(document).ready()在加载部分视图之前触发

Ale*_*lex 7 asp.net-mvc jquery

我有一个页面,其中包含部分视图.

MyMainView.cshtml

<div>
    @Html.Partial("MyPartial")    
</div>
@section pagespecific {
    <script type='text/javascript'>
        $(document).ready(function(){
            console.log('Value is: ' + $('#MyModelField').val());
        });
    </script>
}
Run Code Online (Sandbox Code Playgroud)

MyPartial.cshtml

<div>
    @Html.HiddenFor(x => x.MyModelField)
</div>
Run Code Online (Sandbox Code Playgroud)

但是,MyModelField模型中的值是True我在浏览器控制台中获得以下输出:

Value is: undefined
Run Code Online (Sandbox Code Playgroud)

为什么这不是这个领域?在此触发之前,部分视图是否应该已添加到DOM中?

如果我改变它$(document).ready(),$(window).load()它按预期工作.

我怎样才能达到理想的行为?

Aja*_*707 5

是的,这是真的,原因是您的dom准备好.ready被解雇了。因此,您的页面将首先加载并触发jquery .readyfunction(),而顺序执行的部分视图也将在服务器端执行。

两者的可用性不同。

要停止或您要在一段时间后执行。

  • 您可以在局部视图中执行此操作

要么

  • 给出您的持续时间的延迟时间

    $(document).ready(function(){
        console.log('Value is: ' + $('#MyModelField').val());
        setTimeout("$('#buttonid').click()", DelayDuration);
    });
    
    Run Code Online (Sandbox Code Playgroud)

    // DelayDuration表示给出毫秒值,即1000毫秒= 1秒

在这里问同样的问题

jQuery事件不适用于ASP.NET MVC部分视图

在MVC Asp.net中渲染部分视图后,是否可以启动javascript函数?


ope*_*wix 0

$(document).ready在渲染部分视图之前不会触发,因为部分视图是在服务器端渲染的。您在 jquery 中使用了错误的 ID,因为@Html.HiddenFor(x => x.MyModelField)不会创建 ID=“MyModelField”的元素。元素将具有带前缀的 ID,该前缀取决于您的模型类名称。

在浏览器工具 (F12) 中检查元素的 id 并确定真实的 ID。

示例:如果您的模型名称是Userclass。生成的 id 看起来像User_MyModelField