代码之家  ›  专栏  ›  技术社区  ›  Andrey Bushman

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

  •  4
  • Andrey Bushman  · 技术社区  · 8 年前

    Visual Studio 2017(v15.4.4)
    ASP。NET Core MVC

    我创建了新的ASP。NET核心Web应用程序从空模板中填充它。但当我开始调试时,我发现我的CSS文件无法访问。

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

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

    样式。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 回复  |  直到 8 年前
        1
  •  4
  •   Marco    8 年前

    你有两个问题。

    1. 您已在启动时取消加载静态文件。cs取消注释 app.UseStaticFiles(); 这对于从wwwroot文件夹中以图像形式加载javascript、css、html和其他静态文件至关重要。
    2. 您应该在razor视图中正确解析静态文件,使用 @Url.Content() : <link href="@Url.Content("~/css/site.css")" rel="stylesheet" /> 仅仅使用“~/css/site.css”可能会起作用,但不会百分之百地起作用。我强烈建议使用共享布局。cshtml,它接管了为您加载css文件的任务。

    这将解决您的问题

        2
  •  0
  •   topcool    8 年前
    1. 你必须把所有的固定文件 css , JQuery , js 和在 wwwroot 文件夹来访问它。这是Asp中的一条定律。净核心。

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

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

    4. 要链接,只需从 solution Explorer

    没有其他情况