Muhammd Aamir Ответов: 2

Ошибка с @html. labelfor и циклом @foreach на мой взгляд


Всем привет
я новичок в mvc, я столкнулся с проблемой, у меня есть простое представление, которое содержит форму и цикл foreach синтаксис цикла идет нормально, если я сделал это
@model IEnumerable<SearchBox.Models.Students>

но синтаксис labelfor дает мне ошибку, и если бы я сделал это
@model SearchBox.Models.Students
на мой взгляд тогда модель цикла foreach подчеркнута красной линией

Что мне нужно будет сделать, чтобы решить мою проблему, пожалуйста, помогите мне выйти из нее заранее спасибо

Что я уже пробовал:

Вот вид

@model IEnumerable<SearchBox.Models.Students>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>



@using (Html.BeginForm())
{
    <div class="form-horizontal">
        <div class="form-group">
            @Html.LabelFor(model => model.Name, "Name", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-8">
                @Html.EditorFor(model => model.Name, new { htmlattributes = new { @class = "form-control" } })
            </div>
        </div>
    </div>
}



        <p>
            @Html.ActionLink("Create New", "Create")
        </p>
        <table class="table">
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.Name)
                </th>
                <th></th>
            </tr>

            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.Name)
                    </td>
                    <td>
                        @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
                        @Html.ActionLink("Details", "Details", new { id = item.Id }) |
                        @Html.ActionLink("Delete", "Delete", new { id = item.Id })
                    </td>
                </tr>
            }

        </table>


Контроллер

public class DefaultController : Controller
    {
        private static List<Students> students = new List<Students>()
        {
            new Students() {Id = 1, Name = "Student - 1"},
            new Students() {Id = 2, Name = "Student - 2"},
            new Students() {Id = 3, Name = "Student - 3"},
            new Students() {Id = 4, Name = "Student - 4"},
            new Students() {Id = 5, Name = "Student - 5"},
            new Students() {Id = 6, Name = "Student - 6"},
            new Students() {Id = 7, Name = "Student - 7"},
            new Students() {Id = 8, Name = "Student - 8"},
            new Students() {Id = 9, Name = "Student - 9"}
        };


        // GET: Default
        public ActionResult Index()
        {
            return View(students);
        }
    }

2 Ответов

Рейтинг:
9

Karthik_Mahalingam

Цитата:
но как я могу использовать и то, и другое, на мой взгляд.


это должно быть сделано таким образом, если вам нужно показать только одну модель
<div class="form-group">
           @Html.LabelFor(model => model.First().Name, "Name", htmlAttributes: new { @class = "control-label col-md-2" })
           <div class="col-md-8">
               @Html.EditorFor(model => model.First().Name, new { htmlattributes = new { @class = "form-control" } })
           </div>
       </div>


в противном случае используйте это Несколько моделей в одном представлении в MVC[^]


Muhammd Aamir

Большое спасибо KB:) теперь он работает

Karthik_Mahalingam

добро пожаловать:)

Рейтинг:
2

NightWizzard

Декларация

@model IEnumerable<SearchBox.Models.Students>

сообщает представлению, что предоставленные данные являются своего рода коллекцией типа Students - это можно использовать в цикле.

Декларация
@model SearchBox.Models.Students

сообщает представлению, что существует только один объект типа students (вместо коллекции), и для этого есть что-то, что нужно перебирать.


Muhammd Aamir

но как я могу использовать и то, и другое, на мой взгляд ... моя проблема все та же