2015-01-21 3 views
0

У меня проблема с передачей данных из одного представления в другое с помощью действий контроллера. I первый вид - grid.vc-Grid. По выбору в строке сетки я получаю идентификатор для этого объекта. , переведя его в действие в контроллере. Я пытаюсь отфильтровать данные. Это прекрасно работает.Переадресация из представления в другое представление в asp.net mvc

Здесь фильтр:

[HttpGet] 
public ActionResult PersonenById(int id) 
{ 
    var personen = new ObservableCollection<Person>(); 
    //Getting the data here :-) 

    foreach (DataRow r in access.Rows) 
    { 
     Person p = new Person(); 
     //do some stuff 
     personen.Add(p); 
    } 

    //return PartialView("Personen", personen); //does not work 
    TempData["personen"] = personen; 
    return RedirectToAction("Personen"); // redirect to another view 
} 

В способе II вид заполнен:

public ActionResult Personen() 
{ 
    var persons = new ObservableCollection<Person>(); 
    if (TempData["Persons"] == null) 
    { 

    } 
    return View(persons); //Works perfect 
} 
else 
{ 
    persons = (ObservableCollection<Person>) TempData["Persons"]; 
    return View(persons);//does not redirect to that View 
} 

}

(К сожалению для странного форматированием :-).)

Есть ли другой способ отправки данных из представления в другой? Я попробовал: return partial; возвращение Вид («Лица», лица); и многое другое.

+0

«Извините за странное формирование» - не извиняйтесь, просто отформатируйте его правильно, потому что код почти нечитабелен. –

+1

Неправильные окончания строк. – Hristo

+0

Отформатированная часть его, но во втором блоке кода слишком много фигурных скобок, поэтому не уверены, какой код должен быть. Также TempData ["Персоны"]! = TempData ["personen"] – RobH

ответ

0

Должно работать так:

return RedirectToAction("Personen", model); 

Кроме того, действие "Personen" должны иметь модель в качестве аргумента, например:

public ActionResult Personen(Person model) ... 

LE: Я также заметил, что вы попробовали для отправки данных через объект TempData. Убедитесь, что имя проиндексированного объекта совпадает (например, TempData["person"])

Надеюсь, что он отвечает на ваш вопрос.

+0

Спасибо за подсказку, но TempData ["person"] - это просто ошибка, вызванная copy'n'paste. Когда я устанавливаю точку останова в targetview, точка останова будет достигнута в представлении. Но представление не отображается. –

+0

Вы имеете в виду представление '.cshtml' или' .aspx'? Там вы должны иметь такую ​​же модель «ObservableCollection », если да. –

+0

Привет, Андрей. Да, его .cshtml-View. ObservableCollection идентичен (imo). В противном случае сетка в представлении не получит никаких данных или? То, что не происходит, - это перенаправление на другое представление в браузере. Вид не отображается. –

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