Вопрос по asp.net-mvc-3, c#, jquery – MVC3, как разместить список в классе в контроллере?

1

У меня есть класс:

public class CarList
{
    public int quantity{get;set;}
    public List<Car> Cars {get;set;}
}

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

Затем я создаю список автомобилей из трех автомобилей в списке. Затем я отображаю информацию на экране, используя для цикла Model.Cars внутри. Когда я отправляю форму, поле количества имеет допустимое значение, но Cars имеет значение null.

[HttpPost]
public ActionResult Save(CarList list)
{
    //why is list.Cars NULL when i am posting three items in the list
}

Посмотреть: Модель = Автомобиль, добавил строку

Добавлен новый шаблон редактора для автомобилей с<tr><td>Name</td><td>Html.TextBoxFor(x=>Model.Name)</td></tr>

И в основном виде: Model = CarList, добавлен forloop

@{foreach (Car item in Model.Cars)
       {
           @Html.EditorFor(x=>item);
       }
Как у вас модель привязки в контроллере? Другими словами, как выглядит сигнатура метода? Tieson T.
Также помогает увидеть, как вы связываете свои данные с самим представлением. Tieson T.
какой метод извините? InfoLearner
ure, добавил это сейчас InfoLearner
Извините, я посмотрел прямо мимо. Вы уже опубликовали это. Что мне действительно нужно увидеть, так это ваше мнение. Tieson T.

Ваш Ответ

3   ответа
0

EditorTemplate и тебе будет хорошо.

Создать папку под названием " EditorTemplates "и создайте представление (шаблон редактора) с именемCar.cshtml

Теперь добавьте приведенный ниже код в это новое представление.

@model Car
<p>
   @Html.TextBoxFor(x => x.Name)
</p>

Теперь в главном представлении используйте вспомогательный метод Html.EditorFor HTML, чтобы вызвать этот шаблон редактора.

@model SO_MVC.Models.CarList
<h2>CarList</h2>
@using (Html.BeginForm())
{
    <p>Quanitty </p>
    @Html.TextBoxFor(x => x.quantity) 
    @Html.EditorFor(x=>x.Cars)
    <input type="submit" value="Save" />
}

Теперь есть метод действия HTTPPOst, чтобы принять отправку формы

[HttpPost]
public ActionResult CarList(CarList model)
{
   //Check model.Cars property now.
}

Теперь вы увидите результаты

1

просто есть как

@Html.EditorFor(x => x.Cars)
0

Я думаю, что это проблема:

@foreach (Car item in Model.Cars)
       {
           @Html.EditorFor(x=>item);
       }

Измените это на

@foreach (Car item in Model.Cars)
       {
           @Html.EditorFor(x=>item.Name);
       }

Может быть, модель связующего недостаточно умна, чтобы связать более одного уровня вниз, хотя я не помню, чтобы когда-либо возникала такая проблема. это также может помочь добавитьGlimpse (http://getglimpse.com/ в ваш проект, чтобы вы могли видеть, как на самом деле обрабатывается запрос.

нет, нет геп с измененным для цикла InfoLearner

Похожие вопросы