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

时间:2014-12-23 06:13:14

标签: jquery asp.net-mvc

我有一个包含部分视图的页面。

MyMainView.cshtml

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

MyPartial.cshtml

<div>
    @Html.HiddenFor(x => x.MyModelField)
</div>

模型中MyModelField的值为True,但是,我在浏览器控制台中输入以下内容:

Value is: undefined

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

如果我将$(document).ready()更改为$(window).load(),则按预期工作。

如何实现理想的行为?

2 个答案:

答案 0 :(得分:4)

是的,这是正确的,原因是你的dom准备就绪.ready被解雇了。因此,首先加载页面,然后触发jquery .ready函数(),而顺序执行的局部视图也在服务器端执行。

两者的可用性都不同。

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

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

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

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

    // DelayDuration意味着给出毫秒值,1000毫秒= 1秒

同样的问题在这里提出

JQuery events don't work with ASP.NET MVC Partial Views

Is it possible to kick off a javascript function after a partial view renders in MVC Asp.net?

答案 1 :(得分:0)

$(document).ready在部分呈现之前不会触发,因为部分视图是在服务器端呈现的。您在jquery中使用了错误的ID,因为@Html.HiddenFor(x => x.MyModelField)无法使用ID =&#34; MyModelField&#34;创建元素。元素将具有ID,前缀取决于您的模型类名。

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

实施例: 如果您的模型名称是User类。生成的ID看起来像User_MyModelField