I'm trying to get a partial view to render using Razor in MVC5. When I use
@{ Html.RenderPartial("ViewName", model); }
I get the parser error:
Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.
When I remove the {}
, i.e.:
@Html.RenderPartial("ViewName", model);
I get the compilation error
Cannot implicitly convert type 'void' to 'object'.
What am I doing wrong?
This is wrong:
This is correct:
The parsing error might be caused by the partial view's content. For example, if you have an email address, make sure you use @@ to properly escape the @ sign.
You haven't posted the context of that code, but that error only really happens when you're using
@
directly within a code block without any HTML wrappings. For example:Would give you the error, while:
Would be fine. You could also solve it by just removing the code block for
Html.RenderPartial
entirely, including the@
:You may also use
@Html.Partial("~/View/Home/myview.cshtml")
It returns string while
Html.RenderPartial
calls Write internally, and returns void.Please review your code, you might be getting that error because you are using this code:
@{ Html.RenderPartial("ViewName", model); }
inside any other@{}
clause. Please, read again carefully the error message you get in the browser, you don't need to use the@{}
to switch to code because you already are inside, so, just remove@{
and}
and you should getting it working properly.Use
@Html.Partial()
. It has three overloads, pass the parameters as per your requirement.can you show the code surrounding your RenderPartial? I'm guessing you're in a loop, if block, or some other type of code block. If so, you would just call