web-dev-qa-db-fra.com

MVC3 Razor utilisant le problème Html.BeginForm

C'est probablement une chose simple, mais j'ai obtenu le code suivant:

<div>
    @using (Html.BeginForm()) {
        <p>
            ...
        </p>
    }
</div>

Et il continue de se plaindre que le {crochet de début doit être suivi d'un crochet de fin}, mais c'est là, et tous les exemples de code faisant ce genre de choses montrent cela comme la façon de le faire, donc je suis un peu perplexe quant à pourquoi il ne le fait pas ça marche pas ...

31
Grofit

Il y a probablement une erreur dans le code dans le <p> et </p> Mots clés.

Essayez de le commenter et voyez quel est le résultat:

<div>
    @using (Html.BeginForm()) {
        <p>
                    @*  = Server side comment out.
                    ....
                    *@
        </p>
    }
</div>
35
GvS

Cela a fonctionné pour moi de cette façon:

  @{ using (Html.BeginForm(...))
     {
      <p>
      Content here
      </p>
     }
  }

Le problème est que l'utilisation est une instruction, pas une expression, donc @csharpexpression Ne fonctionnera pas. Pour les instructions, la syntaxe du rasoir consiste à utiliser @{csharpstatement}. Mais l'instruction using comprend sa propre paire d'accolades, donc elle devient un peu tordue comme @{ using(...) { ... } }

3
user721790

Dans mon cas, il me manquait un div de fermeture qui a provoqué une erreur similaire.

Code d'erreur:

<div>
@using (Html.BeginForm()) {
    <div><p>
                @*  = Server side comment out.
                ....
                *@
    </p>
}
</div>

Résolu:

<div>
@using (Html.BeginForm()) {
    <div><p>
                @*  = Server side comment out.
                ....
                *@
    </p></div>
}
</div>
0
TroySteven