Как я могу привязать данные в DropDownList [duplicate]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
106
задан fubo 8 April 2015 в 12:39
поделиться

4 ответа

Вы должны сделать так:

@Html.DropDownListFor(m => m.ContribType, 
                new SelectList(Model.ContribTypeOptions, 
                               "ContribId", "Value"))

Где:

m => m.ContribType

- свойство, в котором будет значение результата.

160
ответ дан bwegs 18 August 2018 в 17:19
поделиться
  • 1
    СПАСИБО!!! Сергей, это именно то, что я искал много часов. – Trey Carroll 22 August 2011 в 07:37
  • 2
    @VeeKeyBee, вы можете добавить новый элемент в список contribTypeOptions, например new Contrib {ContribId = -1, Value = "Please Select"}, и он будет показан в выпадающем списке. Чем вы можете проверить, является ли ContribType -1, это означает, что пользователь не выбрал какое-либо значение – Sergey Gavruk 18 August 2012 в 20:30
  • 3
    – Sergey Gavruk 6 October 2012 в 18:40
  • 4
    @SergeyGavruk. Этот ответ использовался как обман по нескольким недавним вопросам, но запутывает некоторых пользователей из-за оператора И последний параметр конструктора списка выбора - это выбранное значение . Последний параметр игнорируется методом (который внутренне создает свой собственный SelectList). Его значение свойства (ContribType) определяет, что выбрано (как работает привязка модели), а код должен быть только @Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value"). Вы можете отредактировать ответ, чтобы исправить. – Stephen Muecke 23 October 2016 в 22:12
  • 5
    @StephenMuecke спасибо. Готово – Sergey Gavruk 29 October 2016 в 17:15
     @Html.DropDownListFor(m => m.SelectedValue,Your List,"ID","Values")

Здесь Value - это объект модели, в котором вы хотите сохранить выбранное значение

0
ответ дан Abdul Aleem 18 August 2018 в 17:19
поделиться

Для привязки динамических данных в DropDownList вы можете сделать следующее:

Создать ViewBag в контроллере, как показано ниже

ViewBag.ContribTypeOptions = yourFunctionValue();

, теперь использовать это значение, как показано ниже:

@Html.DropDownListFor(m => m.ContribType, 
    new SelectList(@ViewBag.ContribTypeOptions, "ContribId", 
                   "Value", Model.ContribTypeOptions.First().ContribId), 
    "Select, please")
6
ответ дан SteveC 18 August 2018 в 17:19
поделиться

Я думаю, что это поможет: в контроллере получить элементы списка и выбранное значение

public ActionResult Edit(int id)
{
    ItemsStore item = itemStoreRepository.FindById(id);
    ViewBag.CategoryId = new SelectList(categoryRepository.Query().Get(), 
                                        "Id", "Name",item.CategoryId);

    // ViewBag to pass values to View and SelectList
    //(get list of items,valuefield,textfield,selectedValue)

    return View(item);
}

и в представлении

@Html.DropDownList("CategoryId",String.Empty)
7
ответ дан Tommy Grovnes 18 August 2018 в 17:19
поделиться
  • 1
    Обычно это не шаблон бога, чтобы разоблачить ваш репозиторий в представлении. – André Pena 21 June 2014 в 13:31
Другие вопросы по тегам:

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