在加载AJAX的PartialView中添加CSS和JS

时间:2011-07-03 23:24:22

标签: c# ajax asp.net-mvc-3 razor partial-views

我找到了很多关于类似主题的答案,但都指的是不是由AJAX加载的PartialViews,其中解决方案是HtmlHelpers或Head部分,但是当我通过AJAX加载PartialView时它不起作用。

我想在加载AJAX的PartialView中添加CSS样式表和JS脚本。现在我在PartialView中编写它并且它可以工作,但它不是很好的解决方案(包括体内的脚本和样式表)。

3 个答案:

答案 0 :(得分:0)

除验证外,一切都应该正常工作。您需要告诉jQuery您的新内容以便验证它。 看到 ASP.Net MVC: Can you use Data Annotations / Validation with an AJAX / jQuery call?

答案 1 :(得分:0)

如果您只将PartialView加载到页面上,那么应该没有问题,包括正文中的脚本和CSS。就像亚当说的,如果你动态地包含一个HTML表单,你只需告诉jQuery它就可以看到这里ASP.Net MVC 3 client side validation with a dynamic form

但是,如果要在页面上多次包含相同的PartialView,并且不希望多次加载脚本。然后你可以使用动态脚本加载器:

  • 当您加载AJAX以便只包含一次时,您可以从主页面调用一个
  • 包含检查以确保多次未加载相同的脚本。

答案 2 :(得分:0)

我之前不知道在体内使用脚本标签并不是邪恶的。所以我起初并没有那么糟糕。

我在cssLink.js中实现了两个函数,我在head中包含了这些函数:

/// <reference path="../jquery-1.4.4.js" />

function addCssLink(link) {
    var _cssLink = '<link rel=\"stylesheet\" href=\"' + link + '\" type=\"text/css\" />';
    $head = $('head');
    $link = $('link[href=' + link + ']', $head);
    if ($link.length == 0) {
        $head.append(_cssLink);
    }
}

function removeCssLink(link) {
    $('head link[href=' + link + ']').remove();
}

我在PartialViews中使用这些功能:

<script type="text/javascript">
    $(document).ready(function () {
        $('#sideMenu').tabs('#content', '#content > *');
        addCssLink('/Content/SideMenu.css');
    });
</script>

<script type="text/javascript">
    $(document).ready(function () {
        removeCssLink('/Content/SideMenu.css');
    });
</script>

谢谢大家的帮助,我认为关于验证的信息应该对我以后有用:)