MVC3 Razor using Html.BeginForm problem

2019-02-16 06:50发布

问题:

This is probably a simple thing, but ive got the following code:

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

And it keeps complaining that the starting { bracket must be followed by a end } bracket, but its there, and all code examples doing this sort of stuff show this as the way to do it, so im a bit baffled as to why it doesn't work...

回答1:

Probably there is an error in the code within the <p> and </p> tags.

Try commenting it out and see what the result is:

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


回答2:

It worked for me this way:

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

The problem is that using is a statement, not an expression, so @csharpexpression won't work. For statements, the razor syntax is to use @{csharpstatement}. But the using statement includes its own pair of curly braces, so it gets a little twisted like @{ using(...) { ... } }