MVC Простая привязка модели не работает - PullRequest
7 голосов
/ 10 сентября 2010

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

Действие MVC:

[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Create(BatchCreateViewModel createModel)
{
    return RedirectToRoute(MVC.Home.Display());
}

BatchCreateViewModel:

public class BatchCreateViewModel
{
    bool searchAVM;
    bool searchBPO;
    bool searchAppraisal;
    int transactionAge;
    string Description;
    string uploadfile;
}

На странице просмотра имеются элементы управления с именем "searchAVM", "searchBPO", "searchAppraisal", (флажки) "actionAge "(набор переключателей с целым числом)значения) и «описание» (текстовое поле)

Когда я прерываю запись «Создать», создается createModel, но имеет все значения по умолчанию (ноль для строк, ложь для логических значений, 0 дляинт).Если я проверю Request.Form, значения есть, но они просто не попадают в модель.

Что я делаю не так?

(Это в MVC 2, Framework 4.)

1 Ответ

19 голосов
/ 10 сентября 2010

Ваша модель представления должна иметь автоматические свойства, а не публичные переменные. Это застало меня врасплох!

Так и должно быть:

public class BatchCreateViewModel 
{ 
    public bool searchAVM {get;set;}
    public bool searchBPO {get;set;}
    public bool searchAppraisal {get;set;}
    public int transactionAge {get;set;}
    public string Description {get;set;}
    public string uploadfile {get;set;}
} 
...