11

ASP.Net MVC4 でアプリを開発していますが、空白に関する奇妙な問題が発生しています。この問題なしで、Razor を使用して多数の MVC3 サイトを開発しました。

これが私のテンプレート cshtml ファイルです。

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>HF - Content Management - @ViewBag.Title</title>
    <link href="@Url.Content("~/content/bootstrap/bootstrap.min.css")" rel="stylesheet" />
    @Styles.Render("~/bundles/css/hf-cms-logged-in")
</head>
    <body>

        @Html.Partial("Partials/NavBar")

        <div class="container">@RenderBody()</div>

        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script src="@Url.Content("~/scripts/bootstrap/bootstrap.min.js")"></script>
        @Scripts.Render("~/bundles/js/validation")
        <script src="@Url.Content("~/scripts/hf-cms.js")"></script>
    </body>
</html>

RenderBody() 呼び出しの行に注意してください。ここには不要な空白はありません。

アクションを呼び出すと、レンダリングされたボディの先頭に、追加したことを確認できず、削除できないように見える空白が追加されます。ロジックなしでアクションを呼び出すと、次のビューのみが返されます。

@{
    ViewBag.Title = "Dashboard";
}    
<h1>Dashboard</h1>

それは間違いなく正しいテンプレートを使用しています(_ViewStart.cshtmlで指定されています)

Google Chrome でページを表示すると、ソースに余分な空白が表示されます。以下の画像を参照してください。

Google Chrome 開発者ツールに表示される空白

IE10 でも同様の問題が見られます。これは明らかにデザインに影響を与えています。Meleze.Webを使用して余分な空白を削除しようとしましたが、空白がまだ残っています。

これまでのところ比較的単純なサイトであり、ファンキーなことはまだ何も行われていないため、この空白がどこから来ているのかわかりません。

他の誰かが MVC4 または Razor でこれを見たことがありますか?

編集:すべてのスタイルシートとスクリプト ファイルを削除しようとしましたが、空白がまだ存在します。

4

7 に答える 7

10

しばらくこれに苦労した後、解決策を見つけました。

ルートの _ViewStart.cshtml ファイルに変な文字があったはずです。ViewStart ファイルの内容を削除して再入力したところ、問題は解決しました。これにより、奇妙なキャラクターが問題を引き起こしている可能性があると思いました。

自分の質問に答えるのは好きではありませんが、これが他の人の助けになることを願っています。理論的には、これは MVC4 固有の問題ではなく、MVC3 でも同じ問題が発生する可能性があります。

于 2012-09-26T15:55:59.987 に答える
1

同様の問題が発生しました。私の場合、ビューの上部にある @using ディレクティブの 1 つが問題を引き起こしていました。プロジェクトのいくつかの異なるビューで同じものを見つけました。

問題のある文字を見つけるのに役立ったのは、ビュー全体の内容をメモ帳に貼り付けることでした。問題の行が何らかの方法でエンコードされていることがすぐに明らかになりました (メモ帳でも、他の行よりも小さく見えました)。行を削除して最初から書き直すことで問題は解決しましたが、悲しいことに、そもそもどのようにしてその位置にたどり着いたかはわかりません...

于 2014-05-12T12:22:50.560 に答える
1

私は同じ問題を経験しており、あなたが提示したアプローチを試しました、スティーブ. しかし、それは私の問題を解決しませんでした。私が見つけた問題の原因は、子ページの上部にある h2 タグでした。

<h2>@ViewData("Title")</h2>

ラッピング タグを削除すると、すべて正常に機能しました。

@ViewData

テストとして、h2 のスタイルを取得して独自のクラスに配置し、ページ タイトル コンテンツをスパンでラップしました。

<span class="pagetitle">@ViewData("Title")</span>

これは問題なく機能したので、サイトの問題を修正しました。本当の根本原因はわかりませんが、これで問題が解決したので、おそらく他の誰かを助けるでしょう.

于 2013-05-16T15:04:14.933 に答える
0

私は同じ問題を抱えていましたが、ここの手がかりのおかげで問題を特定できました。

多くの調査の後、ページの先頭に Unicode 文字「ゼロ幅の改行なしスペース」があることがわかりました。この文字は、「BOM 付き UTF-8」として保存/エンコードされたページに追加されます。ページが Visual Studio の外部で編集されたか、別の場所からコピーされたか、または VS でページのエンコーディングが正しく設定されていない可能性があると推測できます。他の回答で、コピーしてメモ帳に貼り付けたものを見ると、それを見ることができると述べました。

于 2014-06-10T18:40:06.220 に答える