Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NETMVC应用程序中使用JQuery切换CSS文件_Jquery_Asp.net Mvc 2 - Fatal编程技术网

在ASP.NETMVC应用程序中使用JQuery切换CSS文件

在ASP.NETMVC应用程序中使用JQuery切换CSS文件,jquery,asp.net-mvc-2,Jquery,Asp.net Mvc 2,我想切换正在应用于我的mvc应用程序的css。我想在我的索引页中这样做。默认css的防御在site.master中定义如下: <head runat="server"> <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> <link href="../../Content/Site.css" rel="stylesheet" type="text

我想切换正在应用于我的mvc应用程序的css。我想在我的索引页中这样做。默认css的防御在site.master中定义如下:

<head runat="server">
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
我想把这个jquery放在索引页面中(这是用MVC加载的基本索引视图)

>MasterPageFile=“~/Views/Shared/Site.Master”
>继承=“System.Web.Mvc.ViewPage”%>
> 
> .
>

>

有人能看看我的jquery,看看它是否正确,并告诉我如何连接它吗?提前感谢

我认为您的jQuery应该更改为:

$(function() {
    $('link').first().attr('href', 'nick.css');
});
假设它是您要更改的第一个css文件。但是,为
链接使用ID属性没有什么错:

<link id="style" href="../../Content/Site.css" rel="stylesheet" type"text/css" />
只要将jQuery包装在
标记中,就可以将其放在索引页中任何需要的位置,但我建议您在母版页的
标记中添加
ContentPlaceHolder

<head>
    <title><asp:ContentPlaceHolder ID="TitleHolder" runat="server"></title>
    <asp:ContentPlaceHolder ID="ScriptContent" runat="server" />
</head>

然后在索引页面中,为其添加一个部分:

<asp:Content ContentPlaceHolderID="ScriptContent" runat="server">
    <script>
        $(function() {
            $('link#style').attr('href', 'nick.css');
        });
    </script>
</asp:Content>

$(函数(){
$('link#style').attr('href','nick.css');
});
向jQuery添加模型数据 这与在HTML中执行的操作基本相同:

<script>
    $(function() {
        $('link#style').attr('href', <%= Model.CssStyle %>);
    });

$(函数(){
$('link#style').attr('href',);
});

这是假设您的模型有一个名为
csssstyle
的属性。编译程序时可能会收到关于无效Javascript标记的警告,但可以安全地忽略它们。如果没有插件,Visual Studio中的Javascript支持就没有那么好。

我认为您的jQuery应该改为:

$(function() {
    $('link').first().attr('href', 'nick.css');
});
假设它是您要更改的第一个css文件。但是,为
链接使用ID属性没有什么错:

<link id="style" href="../../Content/Site.css" rel="stylesheet" type"text/css" />
只要将jQuery包装在
标记中,就可以将其放在索引页中任何需要的位置,但我建议您在母版页的
标记中添加
ContentPlaceHolder

<head>
    <title><asp:ContentPlaceHolder ID="TitleHolder" runat="server"></title>
    <asp:ContentPlaceHolder ID="ScriptContent" runat="server" />
</head>

然后在索引页面中,为其添加一个部分:

<asp:Content ContentPlaceHolderID="ScriptContent" runat="server">
    <script>
        $(function() {
            $('link#style').attr('href', 'nick.css');
        });
    </script>
</asp:Content>

$(函数(){
$('link#style').attr('href','nick.css');
});
向jQuery添加模型数据 这与在HTML中执行的操作基本相同:

<script>
    $(function() {
        $('link#style').attr('href', <%= Model.CssStyle %>);
    });

$(函数(){
$('link#style').attr('href',);
});

这是假设您的模型有一个名为
csssstyle
的属性。编译程序时可能会收到关于无效Javascript标记的警告,但可以安全地忽略它们。如果没有插件,VisualStudio中的Javascript支持就没有那么好。

为什么不在视图本身中使用一个额外的CSS文件来添加/更改样式呢。如果您还没有HeaderContent占位符,只需将其添加到Site.master文件中,然后在要更新的视图中将新CSS添加到该占位符中

<head>
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder ID="HeaderContent" runat="server" />
</head>

那么在你看来,

 <asp:Content ID="headerContent" ContentPlaceHolderID="HeaderContent" runat="server">
 <link href="../../Content/nick.css" rel="stylesheet" type="text/css" />
 </asp:Content>

为什么不在视图本身中使用一个附加的CSS文件来添加/更改样式呢。如果您还没有HeaderContent占位符,只需将其添加到Site.master文件中,然后在要更新的视图中将新CSS添加到该占位符中

<head>
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder ID="HeaderContent" runat="server" />
</head>

那么在你看来,

 <asp:Content ID="headerContent" ContentPlaceHolderID="HeaderContent" runat="server">
 <link href="../../Content/nick.css" rel="stylesheet" type="text/css" />
 </asp:Content>



fyi您不需要
head
标签上的
runat=“server
。创建mvc appfyi您不需要
runat=”时,我只是复制了站点主控中的内容服务器
在您的
头上
标记。我创建mvc应用程序时只是复制了站点主控中的内容。我想将其添加到索引页,因为我想使用模型中连接到索引页的参数中的信息。这有意义吗?是的。只需将jQuery放在索引页中。或者您想问一下如何将模型数据放入Javascript中?您可以展示一个在jquery中将值放入模型数据的快速示例吗。我想把数据作为一个值放在一个隐藏的标签中,但我不确定这是否是一个好主意。我编辑了我的答案,包括你能做什么。这很简单---这不是为meI编译的,我想将其添加到索引页,因为我想使用模型中连接到索引页的参数中的信息。这有意义吗?是的。只需将jQuery放在索引页中。或者您想问一下如何将模型数据放入Javascript中?您可以展示一个在jquery中将值放入模型数据的快速示例吗。我想把数据作为一个值放在一个隐藏的标签中,但我不确定这是否是一个好主意。我编辑了我的答案,包括你能做什么。这很简单---这不是为我编译的。他可能想删除第一个样式并用第二个样式替换它,而不是仅仅应用额外的样式并覆盖现有的样式。@DanielT-我在做主题时可以看到这一点,但通常你会替换主题CSS而不是site.CSS。我完全同意。然而,在他最初的问题中(在编辑之前),他说他想替换CSS。不过,我认为您的解决方案是推荐的做法,假设他真的不需要替换CSS。@DanielT-当选择不同的CSS文件应用于特定视图时,我认为在视图中引用其他CSS文件,根据需要替换样式几乎总是最好的方法,而不是通过javascript替换CSS。至少你可以确信,它在没有javascript的情况下可以正常工作。+1同意。对于阅读本文的任何人来说,只有在特殊情况下需要使用Javascript替换CSS时,才可以使用Javascript替换。他可能希望删除第一种样式并使用第二种样式替换CSS,而不是仅仅应用额外样式并覆盖现有样式。@DanielT-我在处理主题时可以看到这一点,但是通常你会用主题CSS而不是site.CSS来代替。我完全同意。然而,在他看来