是否可以控制HTML Razor组件的呈现顺序?

时间:2019-09-18 21:05:23

标签: javascript c# jquery html razor

我正在尝试呈现我的页面之一,并且我想显示的div顶部有一个Html.RenderAction()调用。我想从通过我的RenderAction调用显示的页面内部,在document.ready()中调用我的一个js初始化方法,但似乎在{之后的页面中的html之前触发document.ready() {1}}个电话。

因此,init函数正在检查来自kendo元素的数据,该数据由于在JQuery完成之前已被调用而尚未加载,因此只能将应作为kendo输入的输入视为默认html Html.RenderAction()元素

换句话说,是否有一种方法可以将RenderAction的加载/调用延迟到页面加载内部为止?还是我应该只使用一些难看的CSS将我需要的部分放在div的顶部?下面是我的代码的非常基本的摘要:

<input>

调用init()方法的文件

<html>
...
<div>
  @Html.RenderAction("File that calls init() method")
  <...rest of page that I need to load first, including kendo text boxes/>
</div>

</html>


现在我已经在其他地方实现了下面的答案,我已经意识到,当从<div> ... </div> <script src="..."> $(document).ready(function() { myJs.init(params) } </script> 切换到document.ready时,它打破了另一个工作原理相似的视图,但是{{ 1}}通话位于底部:

window.on('load',...)

基本上,如果剃须刀在剑道之前,@Html.RenderAction对我有用,反之则不行-和... <div> <>page including kendo inputs</> @Html.RenderAction("different file that calls same init() method") </div> </html> 对我有用。


更新:经过大量的尝试和错误,我最终不得不重新排列我的页面,以寻求解决方案-似乎没有简单的方法可以解决剃须刀的装载顺序CSHTML页面

2 个答案:

答案 0 :(得分:1)

这可能有效,请尝试使用$(window).load(function()代替$(document).ready(function()

<div>
...
</div>
<script src="...">
  $(window).load(function() {
    myJs.init(params)
  }
</script>

通过下面的链接:“在完整页面(包括所有框架,对象和图像)完全加载时执行”

jQuery - What are differences between $(document).ready and $(window).load?

答案 1 :(得分:0)

经过大量的尝试和错误,我最终不得不重新排列页面,以寻求解决方案-似乎没有简单的方法可以将剃须刀加载到CSHTML页面上。