Asp.net mvc 2 связующие модели, что находится за сценой - PullRequest
0 голосов
/ 30 августа 2010

Я начинаю с MVC2 и у меня простой вопрос:

Если у меня есть типизированное представление с формой внутри, и это текстовое поле создано с помощью лямбда-выражений:

 <%: Html.TextBoxFor(e => e.Name)%>

Когда я отправляю эту форму, механизм связывания моделей по умолчанию принимает форму запроса, принимает набранную модель в представление, сериализует публикуемые данные (как эту модель) и передает ее в действие моего контроллера.

Чтобы попытаться объяснить себя лучше, давайте представим, что у меня есть URL-адрес типа localhost / edittestmodel / ID / 1, и в моем действии контроллера есть следующий код:

public ActionResult Edit(int id)
{
    TestModel testmodel=new TestModel();
    testmodel.Name="texttorenderintotextbox";
    //whats the class that place the testmodel properties into the view? 
    return View(testmodel);

}

Что такое ответственный класс для размещения свойства Name моего объекта testmodel в текстовое поле

<%: Html.TextBoxFor(e => e.Name)%>

Заранее спасибо.

С наилучшими пожеланиями.

Хосе.

Ответы [ 2 ]

1 голос
/ 30 августа 2010

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

0 голосов
/ 30 августа 2010

Представления не имеют ничего общего с запросом POST и привязкой модели

Когда у вас строгие представления типов, тип модели едва используется, чтобы иметь простоту intellisense кода в коде представления (поэтому вы можете использовать лямбда-выражения, как в вашем примере).

Но когда вы возвращаете данные обратно, ничто не проверяется в представлении. Это проверяется по параметрам действия контроллера, хотя. И если есть параметр с определенным пользовательским типом подшивки модели, эта конкретная подшивка модели используется для обработки входящих данных.

Но чтобы ответить на ваш вопрос : TextBoxFor проверяет модель вашего строгого типа и генерирует конкретное текстовое поле с правильным атрибутом имени. Таким образом, данные из него будут отправлены обратно под правильным именем поля формы.

Чтобы пойти еще глубже. Это механизм представления, который анализирует ASPX-код представления и запускает все серверные сценарии, включая вызов Html.TextBoxFor().

...