ASP.NET MVC 2 - ViewData пустой после POST - PullRequest
3 голосов
/ 28 мая 2010

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

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

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

Как это может быть? С чего начать поиск ошибки?

Ответы [ 4 ]

8 голосов
/ 28 мая 2010

ViewData имеет значение при переходе от контроллера к представлению. Это не отправит назад.

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

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

Тогда привязка (модель? Параметр?) Должна за вас позаботиться

1 голос
/ 28 мая 2010

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

public ActionResult DoSomething(FormCollection fc)
{
     System.Diagnostics.Debug.Writeline(fc["data1"]);
}
0 голосов
/ 28 мая 2010

попробуйте это:

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 голосов
/ 28 мая 2010

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

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

Также см. Этот вопрос .

...