I would like to ask, how can I bind an array in Asp.NET Core MVC ?
<input type="text" asp-for="Requests[@index].Name" />
It was working very well in older versions of ASP MVC. This example shows "Internal server error".
"An error occurred during the compilation of a resource required to process this request. Please review the following specific error details and modify your source code appropriately."
ViewModel class example:
public class ViewModel
{
public List<Model> Requests {get;set;}
}
Model class example:
public class Model
{
public string Name {get;set;}
}
How it should work ? After you submit a form with these inputs, MVC should automaticly create and map the list in ModelView. That's how It works in ASP.NET MVC 4.
asp-for sets the id , name and validation related attributes, and it also sets the value of the input element if there is already a value within the model passed to the view – if that's what you are asking.
The Input Tag Helper binds an HTML <input> element to a model expression in your razor view.
The model binding system: Retrieves data from various sources such as route data, form fields, and query strings. Provides the data to controllers and Razor pages in method parameters and public properties. Converts string data to . NET types.
The syntax to register all the tag helpers that are in an assembly is to use asterisk comma (*,) and then the assembly name, Microsoft. AspNet. Mvc. TagHelpers.
You need to use a valid expression with asp-for
that can be compiled, basically if index
is a variable you are using in a for loop then you would write <input asp-for="@Model.Requests[index].Name" />
Full example (I've used i
as the loop variable instead of index
):
@model MyProject.TodoItemList
<ul>
@for (int i = 0; i < Model.Requests.Count; i++)
{
<li>
<label asp-for="@Model.Requests[i].Name"></label>
<input asp-for="@Model.Requests[i].Name"/>
@* Or the old html helpers if you prefer
@Html.DisplayFor(model => model.Requests[i].Name)
*@
</li>
}
</ul>
For more info, check Expression names and Collections in the docs
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