Html.RenderPartial() syntax with Razor

asp.net Mvcasp.net Mvc-3Razor

asp.net Mvc Problem Overview


This works, because it returns the result of partial view rendering in a string:

@Html.Partial("Path/to/my/partial/view")

But I prefer to use RenderPartial and it seems I need to write:

@{Html.RenderPartial("Path/to/my/partial/view");}

instead of:

@Html.RenderPartial("Path/to/my/partial/view");

To get it to work. Error message:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

If there any better way instead of opening code block @{...} just for one method call?

asp.net Mvc Solutions


Solution 1 - asp.net Mvc

  • RenderPartial() is a void method that writes to the response stream. A void method, in C#, needs a ; and hence must be enclosed by { }.

  • Partial() is a method that returns an MvcHtmlString. In Razor, You can call a property or a method that returns such a string with just a @ prefix to distinguish it from plain HTML you have on the page.

Solution 2 - asp.net Mvc

Html.RenderPartial() is a void method - you can check whether a method is a void method by placing your mouse over the call to RenderPartial in your code and you will see the text (extension) void HtmlHelper.RenderPartial...

Void methods require a semicolon at the end of the calling code.

In the Webforms view engine you would have encased your Html.RenderPartial() call within the bee stings <% %>

like so

<% Html.RenderPartial("Path/to/my/partial/view"); %>

when you are using the Razor view engine the equivalent is

@{Html.RenderPartial("Path/to/my/partial/view");}

Solution 3 - asp.net Mvc

@Html.Partial("NameOfPartialView")

Solution 4 - asp.net Mvc

If you are given this format it takes like a link to another page or another link.partial view majorly used for renduring the html files from one place to another.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionartvolkView Question on Stackoverflow
Solution 1 - asp.net MvcOfer ZeligView Answer on Stackoverflow
Solution 2 - asp.net MvcNicholas MurrayView Answer on Stackoverflow
Solution 3 - asp.net MvcRouRView Answer on Stackoverflow
Solution 4 - asp.net MvcSankarView Answer on Stackoverflow