0

私はこのコードブロックを持っています:

@if (!String.IsNullOrEmpty(ViewBag.Error))
{
    <h2>Please, choose a Start date.</h2>
}
else
{
    if (Model.Count() > 0)
{
var lastArticolo = "";
<h2>
    Rapporti Capoturno @Model.First().rapportoCT.DLinea
</h2>
<table>
    @foreach (var rapporto in Model)
    {
        if (lastArticolo != rapporto.rapportoCT.DCodArt)
        {
        <tr>
            <td class="td_title">
                @rapporto.rapportoCT.DCodArt
            </td>
        </tr>
            lastArticolo = rapporto.rapportoCT.DCodArt;
        } using (Html.BeginForm("ControlloQualita", "Rapporti"))
        {
        <tr>
            <td class="td_detail">
                @Html.TextBox("PalletControllati", rapporto.PalletControllati, new { style = "width:50px" })
            </td>
            <td>
                <input type="submit" value="Update" />
            </td>
        </tr>
        }
    }
</table>
}
else
{
    @:No records found 
}
}

6 行目にエラーが表示されます: else ブロックに終了文字がありません

エラーは の最後の行にあり@:No records found }ます。

つまり、@:構文を使用したため、終了}は文字列の一部として解釈されます!

これを手動で解決するための 2 つのオプション(もちろん、問題の場所を特定した後でのみ!):

  1. 最後の行を html タグを使用するように変更します: <span>No records found</span> };
  2. 締め{を新しい行に移動します。

私は mvc の初心者なので、いくつかのポイントを逃す可能性があります。私はかなり長い間 ASP.NET Web フォームを使用してきたため、この Razor 構文は非常に混乱しやすく、エラーが発生しやすいように見えますが、MVC モデル、コントローラー、ビューの分離、MVC モデル バインディング、および VS IntelliSense のおかげです。 ...) 古い ASP タグ スープ。

ただし、これは非常に単純なビューであり、それでもなお、非常に多くのインデントが頭痛の種であり、構文エラーを見つけるのが微妙でした...複雑な形式で奇妙な動作をデバッグする必要があるときは想像できません。

最後に、私の質問は次のとおりです。このかみそりの構文を使用して、ビューの複雑さをどのように管理しますか? 複雑なビューの複雑さは適切に拡大されますか?

4

2 に答える 2

1

カミソリ エンジンに C# に戻るように指示する必要があります。<text>

@if (!String.IsNullOrEmpty(ViewBag.Error))
{
    <text><h2> Please, choose a Start date.</h2> </text>        
}
else
...

より単純な構文を使用できることに注意してください。@:

于 2013-11-05T09:19:36.357 に答える
1

簡単な解決策は、nor records found 行を次のように変更することです。

else {
    @Html.Raw("No records found.") 
}
于 2013-11-05T09:22:11.077 に答える