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?
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.
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");}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With