4

関連:Html.BeginForm問題を使用したMVC3 Razor

Razorエンジンを使用してMVC3/ VBのHTMLフォームを作成すると、次のように実行できると期待します。

@Using Html.BeginForm("Action", "Controller")
    <fieldset>
        @* Other form code and values *@
    </fieldset>
End Using

しかし、そうすると、「BC32035:属性指定子は完全なステートメントではありません。行の継続を使用して、属性を次のステートメントに適用してください。」というメッセージが表示されます。このエラーを回避するには、開始タグの前に@文字を追加する必要があります。誰かが理由を説明できますか?

4

4 に答える 4

3

私は、Razorのbeginformは次のようになるべきだと信じています。つまり、中かっこを使用します。

@using (Html.BeginForm())
{
    @* Other code here *@
}
于 2012-04-19T10:07:43.640 に答える
3

私はVB.NETを使用していませんが、これを行う必要があると思います。

@Using Html.BeginForm("Action", "Controller")
    @:<fieldset>
        @* Other form code and values *@
    @:</fieldset>
End Using

VB.NETのXMLに対するファーストクラスのサポートにより、タグはXMLとして扱われるため、フィールドセット(さらに言えば任意のHTMLタグ)もXMLとして扱われます。XMLはVB.NETの言語の一部であり、Razorのパーサーに対抗して実行されます

ASP.NET MVCforVB.NETを使用したVS2010の簡単な旅行。これで十分です。

@Using Html.BeginForm("Action", "Controller")
    @<fieldset>
        @* Other form code and values *@
    </fieldset>
End Using

VB.NETの言語リテラルXMLサポートは、Razorのパーサーに反するものであり、追加@または追加することでそれを防ぐことができます。@:

于 2012-04-19T11:12:26.547 に答える
3

RazorをC#で使用する場合、HTMLの明示的な「<」文字が有効なC#トークンではないため、パーサーがコードからマークアップへの遷移を判別できるため、説明することが可能です。VB.NETはコードで直接インラインXMLをサポートしているため、Razorパーサーは、マークアップに戻ったことを判別できないため、より明示的にする必要があります。

于 2012-04-19T11:23:11.473 に答える
1

複数行のサポートについては、Razor VB.net MVCでの使用で指摘されているように、期待どおりに機能しない@<text>...</text>ため、「テキストモード」に切り替えて、次のようにhtmlを出力できます。

@Using Html.BeginForm("Action", "Controller")
    @<text>
      <fieldset>
        * Other form code and values *
      </fieldset>
    </text>
End Using
于 2014-11-10T21:57:45.107 に答える