2010-05-28 3 views
2

Я действительно не знаю, где искать ошибку ... ситуация: у меня есть представление ASPX, которое содержит форму и несколько входных данных, и когда я нажимаю submit, все POST'ed относится к одному из моих действий ASP.NET MVC.ASP.NET MVC 2 - ViewData пуст после POST

Когда я установил там точку останова, он попал правильно. Когда я использую FireBug, чтобы увидеть, что отправлено в действие, я правильно вижу data1 = abc & data2 = что-то & data3 = 1234.

Однако в моем методе действий ничего не происходит. ViewData пуст, нет ViewData ["data1"] или чего-либо еще, что бы показать, что данные прибыли.

Как это может быть? Где я могу начать искать ошибку?

+0

WRT data1 = ABC & data2 = ... то, что делает т как его подпись метода для вашего метода действий выглядит? –

+0

Нет параметров. ViewData ["data1"] должен иметь доступ к значению. Но это значение равно нулю, хотя FireBug показывает, что значение было отправлено. – Alex

+0

Что вы ожидаете найти в ViewData в обратной передаче? Он используется для того, чтобы контроллер мог отправлять данные в представление, а не наоборот. Посмотрите в 'Request [" data1 "]' или даже лучше в параметрах действия контроллера. –

ответ

8

ViewData имеет значение при переходе от контроллера к виду. Он не будет отправлять назад.

вам нужен ваш метод действия, чтобы выглядеть как

public ActionResult DoSomething(string data1, string data2, int data3) { ... 

Тогда (модель параметр?) Связывание должны заботиться о вещах для вас

+0

... Точно :-) –

1

Попробуйте изменить свое действие, чтобы принять FormCollection:

public ActionResult DoSomething(FormCollection fc) 
{ 
    System.Diagnostics.Debug.Writeline(fc["data1"]); 
} 
0

Если вы хотите увидеть, что размещено в вашем представлении, примите форму FormCollection как параметр или привяжите элементы формы непосредственно к модели. Например:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult PostToThisView(FormCollection formItems) 
{ 
    var data1 = formItems["data1"]; 
    return View(); 
} 

Также, see this question.

0

попробовать это:

Request["data1"] 

или

Request.Form["data1"] 

или

[HttpPost] 
public ActionResult YourPostAction(object data1) 

или

[HttpPost] 
public ActionResult YourPostAction(ACLassThatHasData1Prop viewmodel) 
//your view doesn't has to be strongly typed to the type of the parameter in this case 
+0

Что касается последнего примера, модель, используемая для параметра, не обязательно должна быть такой же, как модель, которая строго типизирована для представления, с которого пришел запрос. Модельное связующее просто принимает значения, хранящиеся в коллекции форм (или строку запроса, если запрос является GET), и пытается использовать их для заполнения любого типа объекта в качестве параметра. –

+0

@Dr. Ученик Уайли, thnx, чтобы сказать мне, что – Omu

 Смежные вопросы

  • Нет связанных вопросов^_^