ASP.NET Core MVC:为什么没有复制wwwroot目录的内容?

时间:2017-11-19 10:07:32

标签: css asp.net-mvc

Visual Studio 2017(v15.4.4)
ASP.NET核心MVC

我从空模板创建了新的ASP.NET Core Web Application并填充了它。但是当我开始调试时,我发现我的CSS文件无法访问。

  

找不到网址的页面 http://localhost:51308/css/styles.css
  HTTP错误404

为什么会发生这种情况?如何解决这个问题?

styles.css的

.field-validation-error {color: #f00;}
.field-validation-valid {display: none;}
.input-validation-error {border: 1px solid #f00; background-color: #fee;}
.validation-summary-errors {font-weight: bold; color: #f00;}
.validation-summary-valid {display: none;}

RsvpForm.cshtml

@model Razor.Models.GuestResponse
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Razor

@{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>RSVP Form</title>
    <link rel="stylesheet" href="~/css/styles.css"/>
</head>
<body>
    <div>
        This is RSVP form.
        <form asp-action="RsvpForm" method="post">
            <div asp-validation-summary="All"></div>
            <p>
                <label asp-for="Name">Your name:</label>
                <input asp-for="Name" />
            </p>
            <p>
                <label asp-for="Email">Your email:</label>
                <input asp-for="Email" />
            </p>
            <p>
                <label asp-for="Phone">Your phone:</label>
                <input asp-for="Phone" />
            </p>
            <p>
                <label>Will you attend?</label>
                <select asp-for="WillAttend">
                    <option value="">Choose an option</option>
                    <option value="true">Yes I'll be there</option>
                    <option value="false">No, I can't come</option>
                </select>
            </p>
            <button type="submit">Submit RSVP</button>
        </form>
    </div>
</body>
</html>

enter image description here

UPD

我将styles.css重命名为site.css并在GitHub上分享了此示例:here是此示例的代码源。

2 个答案:

答案 0 :(得分:1)

  1. 您必须将cssJQueryjs和...等所有固定文件放入wwwroot文件夹中才能访问它。这是Asp.Net Core中的一项法律。

  2. 此外,当您运行项目时,按ctrl + U显示您的代码并单击css链接。必须显示css命令。单击后未显示Apeer文件未正确加载。

  3. 默认情况下,有一个名为site.css的文件,您必须在其中编写所有css命令和网站样式。它在_Layout中链接,您可以在此之后链接新的css文件。

  4. 要进行链接,只需将solution Explorer中的css文件拖放到代码框中

  5. 没有其他案例

答案 1 :(得分:1)

你有两个问题。

  1. 您已在startup.cs中取消激活加载静态文件取消注释app.UseStaticFiles();这对于将javascript,css,html和其他静态文件作为wwwroot文件夹中的图像加载至关重要。
  2. 您应该使用@Url.Content()正确解析剃刀视图中的静态文件:<link href="@Url.Content("~/css/site.css")" rel="stylesheet" /> 只需使用&#34;〜/ css / site.css&#34;可能会工作,但不会100%的时间。我强烈建议使用共享的Layout.cshtml,它接管为您加载css文件。
  3. 这将解决您的问题