为什么我的样式表会在MVC上使用HayWire?

时间:2009-09-28 14:44:58

标签: c# asp.net html asp.net-mvc

我正在努力熟悉ASP.NET上的MVC。我有我的global.asax

routes.MapRoute("Dept", "Dept/Invoice/{Category}/{Name}", 
new {controller = "Dept", action = "Invoice", Category = "", Name = ""});

Controller.cs代码获取数据并将其放在一个表中,这很好。我的HTML开始......

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BMICPolicy.Dept>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<link rel="Stylesheet" type="text/css" href="../../Content/Test.css" />
<html xmlns="http://www.w3.org/1999/xhtml">

样式表 -

body
{
    font-family: Arial, Verdana, Book Antiqua, Sans-Serif;
    font-size: 12px;
    width: 100%;
    height: 100%;
    min-height: 100%;
    text-align: center;
     text-align: -moz-center;
    padding: 0px;
    margin: 0px;
    position: relative;
}
table 
{
  border: solid 1px #000000;
  border-collapse: collapse;  
}

table td 
{
  padding: 5px;   
  border: solid 1px #000000;  
}

table th
{
  padding: 6px 5px;  
  background-color: #729FCB; 
  border: solid 1px #000000;   
  text-align: center;
}

thead
{
    /*font-size: medium;*/
    font: large, bold;
    text-align: center;
}

我不确定为什么样式表仅在我输入“类别”时才起作用,当我在地址栏中键入名称时,我的样式表被完全忽略(正文字体样式,表格,td,th,thead,等等...)。我错过了什么吗?

3 个答案:

答案 0 :(得分:3)

../../Content/Test.css是一个相对URI,意思是“在当前位置的父文件夹的父文件夹中查找名为Content的文件夹,并在该文件夹中找到一个名为{{1的文件}}

当您只输入一个类别时,您正在寻找名为Test.css的{​​{1}}文件夹的兄弟。当您输入名称时,您正在寻找Dept文件夹的兄弟。

或许您希望使用Content作为样式表的路径。

答案 1 :(得分:0)

那是因为您当前的路径被视为嵌套的文件夹层次结构,并且相对路径根本不起作用(您的css正在Dept/Invoice/Content/Test.css或类似的东西中搜索,这显然是不正确的)。这是样式和脚本文件的常见情况,尤其是当它们放在母版页中时。

在这种情况下,正确的做法是按照this thread中的说明使用Url.Content。 Imho这比绝对路径更好。

答案 2 :(得分:0)

更改此行:

<link rel="Stylesheet" type="text/css" href="../../Content / Test.css“/&gt;

到此:

<link rel="Stylesheet" type="text/css" href="<%=ResolveUrl("~/Content/Test.css“)%&gt;” /&GT;