'How to pass parameters to a partial view in ASP.NET MVC?
Suppose that I have this partial view:
Your name is <strong>@firstName @lastName</strong>
which is accessible through a child only action like:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
And I want to use this partial view inside another view with:
@Html.RenderPartial("FullName")
In other words, I want to be able to pass firstName ans lastName from view to partial view. How should I do that?
Solution 1:[1]
Here is another way to do it if you want to use ViewData:
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
And to retrieve the passed in values:
@{
string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
Solution 2:[2]
You need to create a view model. Something like this should do...
public class FullNameViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public FullNameViewModel() { }
public FullNameViewModel(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
}
then from your action result pass the model
return View("FullName", new FullNameViewModel("John", "Doe"));
and you will be able to access @Model.FirstName and @Model.LastName accordingly.
Solution 3:[3]
make sure you add {} around Html.RenderPartial, as:
@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
not
@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
Solution 4:[4]
Following is working for me on dotnet 1.0.1:
./ourView.cshtml
@Html.Partial(
"_ourPartial.cshtml",
new ViewDataDictionary(this.Vi??ewData) {
{
"hi", "hello"
}
}
);
./_ourPartial.cshtml
<h1>@this.ViewData["hi"]</h1>
Solution 5:[5]
Just:
@Html.Partial("PartialName", Model);
Solution 6:[6]
@{
Html.RenderPartial("_partialViewName", null, new ViewDataDictionary { { "Key", "Value" } });
}
in the place you want to show your partial,
@{
string valuePassedIn = this.ViewData.ContainsKey("Key") ? this.ViewData["Key"].ToString() : string.Empty;
}
in the partialview rendered,
To use the valuePassedIn --> @valuePassedIn
Solution 7:[7]
I just came across this question, and I have a similar situation
my problem is as follows : I have more than one variable I need to pass to the partial view I created
The solution I have created
@{
await Html.RenderPartialAsync("YourPartialViewName",new { NumberOfProducts = ViewData["NumberOfProducts"], UserName = ViewData["UserName"] });
}
In the above code, I created an anonymous object and sent it to the view and the following code is to explain how to retrieve the data that sent through this object
<span>
@Model.UserName
</span>
<span>
@Model.NumberOfProducts
</span>
hope this helps
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Garry English |
| Solution 2 | Matt |
| Solution 3 | BlackTigerX |
| Solution 4 | Evgenia Karunus |
| Solution 5 | Cássio Batista Pereira |
| Solution 6 | V_G_ |
| Solution 7 | Mahmoud Elgazzar |
