2017-01-26 3 views
2

Я хотел бы спросить, как я могу связать массив в Asp.NET Core MVC?Как связать массив с тегом asp-for?

<input type="text" asp-for="Requests[@index].Name" /> 

Он работал очень хорошо в старых версиях ASP MVC. В этом примере показана «Внутренняя ошибка сервера».

«произошла ошибки во время компиляции ресурса, необходимого для обработки запроса Пожалуйста, ознакомьтесь с следующими конкретными сведениями об ошибках и изменять исходный код соответствующего..»

класса ViewModel примера:

public class ViewModel 
{ 
    public List<Model> Requests {get;set;} 
} 

Модель пример класса:

public class Model 
{ 
    public string Name {get;set;} 
} 

Как это должно работать? После отправки формы с этими входами MVC должен автоматически создавать и сопоставлять список в ModelView. Вот как это работает в ASP.NET MVC 4.

+0

Не могли бы вы объяснить, что вы пытаетесь достичь? – Techy

+0

Я добавил больше описания. – wh1sp3r

ответ

4

Вы должны использовать действительное выражение с asp-for, которые могут быть собраны, в основном, если index переменная используется в цикле, то можно было бы написать <input asp-for="@Model.Requests[index].Name" />

Полный пример (я использовал i в качестве переменной цикла вместо 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> 

Для получения дополнительной информации, проверить имена выражений и Коллекции в the docs

Смежные вопросы