1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Blazorにて@code{}の中の記述に「名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません」

Posted at

結論

どっかのダブルクォーテーションが一つ足りない
(というより普通にHtml部分に間違いがある)

経緯

こちらが今回問題となったコード

@rendermode @(new InteractiveServerRenderMode(false))
@inject NavigationManager NavigationManager

<nav class="navbar navbar-expand-lg bg-primary" data-bs-theme="dark">
    <div class="container-fluid">
        <a class="navbar-brand" href="#">DefeatYourOpponent.GG</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                <li class="nav-item">
                </li>
            </ul>
            <a class="d-flex" role="button" @onclick="OnGithubButtonPush">
                <i class="align-self-center bi bi-github text-white mx-2 mb-2" style="font-size:1.5em;"></i>
            </a>
            <a class="d-flex" role="button" @onclick="() => OnNotImplementedButtonPushed(_contact)">
                <i class="bi bi-chat-dots text-white mx-2 mb-2" style="font-size:1.5em;" />
            </a>
            <a class="d-flex" role="button" @onclick="() => OnNotImplementedButtonPushed(_translation)>
                <i class="bi bi-translate text-white mx-2 mb-2" style="font-size:1.5em;"></i>
            </a>
        </div>
    </div>
</nav>

<ModalDialog @ref="_dialog"
             Title="@_dialogTitle"
             Message="Sorry, but not implemented now."
             OkButtonLabel="OK" />

@code {
    private static readonly string _contact = "Contact me";
    private static readonly string _translation = "Translation";

#pragma warning disable CS8618
    private ModalDialog _dialog;
#pragma warning restore CS8618
    private string _dialogTitle = "";

    private void OnGithubButtonPush()
    {
        NavigationManager.NavigateTo("https://github.com/GreatKobayashi/DefeatYourOpponent/tree/develop/beta");
    }

    private async void OnNotImplementedButtonPushed(string functionName)
    {
        _dialogTitle = functionName;
        await _dialog.Show();
    }
}

ナビゲーションバーのコンポーネントである
未実装のボタンをクリックするとモーダルダイアログがでるようにした

が、ビルドエラー
題名にもした「名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません」のほかにも謎のエラー(型名 '__PrivateComponentRenderModeAttributeAttribute' が型 'NavBar' に存在しません)とかも出た 弱った

Blazor君はしばしばビルドバグったりするのでその一環かなとVisual studioを開きなおしてみたけど変化なし

対応

といってもよくわからないから疑わしきところを消して変化が起こるか調べた
@code{}の中をどんなにいじっても変わらなくて絶望した

やけくそになって1行目の@rendermode @(new InteractiveServerRenderMode(false))を消したところデバッガーが動いた
なんでかは謎
今までVisual studio君は「問題は見つかりませんでした」といいつつビルドエラーは出すというぱっぱらぱーだったが、問題のある個所が赤下線でハイライトされるようになった

そして気づく
なんか変なエラーがある
Unexpected closing tag 'i' with no matching start tag.
iの開始タグがない? そんなわけねーじゃん よく見ろよ~~

よく見た
その直前の
<a class="d-flex" role="button" @onclick="() => OnNotImplementedButtonPushed(_translation)>
ダブルクォーテーションないじゃないの

俺が悪かったよ、Visual studio君…

まとめ

Html部分にミスがあると、デバッガーがバグ?って謎のエラーを出すようです
意味わからないこと言われたら一度Html部分を見返すといいでしょう…

以上、ぱっぱらぱーの拙文でした

宣伝

http://defeatyouropponent.net/
LoLの戦績サイト作ってみました
まだまだ開発途中ですが、よしなに

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?