我有一个包含部分视图的页面。
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()
,则按预期工作。
如何实现理想的行为?
答案 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