2015-12-01 2 views
1

Я сохраняю список строк в сеансе. Тогда я не знаю, как заставить эти данные отображать на мой взгляд.Как отображать данные, хранящиеся в сеансах в mvc C#

Это мой код:

public List<Details> d = new List<Details>(); 

[HttpPost] 
public void getDatas(string destination) 
{ 
    XElement rootele = XElement.Load(Server.MapPath("~/XmlFiles/CruiseData/cruiseprodutstwo.xml")); 
    var getneededData = rootele.Elements("CruiseProduct") 
           .Where(l => l.Element("Location").Value == destination) 
           .Select(s => s.Element("Name").Value); 

    foreach (var itm in getneededData) 
    { 
     d.Add(new Details 
     { 
      cruiseName = itm 
     });  
    } 

    Session["names"] = d;  
    Response.Redirect("Check",true); 
} 

Это мой чек метод действия

public ActionResult Check()    
{ 
    var chk = Session["names"];  
    return View(); 
} 
+0

Является ли 'Session [" names "]' возвращающим что-либо в вашем методе 'Check'? – Steve

+0

Нет, он ничего не возвращает, но после этого метода getDatas() закончить, я хочу отобразить представление chek. –

+0

Ваш объект 'getneededData' заполнен? Для перенаправления на представление «Проверить» вы можете использовать 'return RedirectToAction (« Проверить »),' – Steve

ответ

0

Вы можете хранить ваши данные в ViewBag, а затем получить их в виде:

public ActionResult Check() 
{ 
ViewBag.SessionData = Session["names"] as List<DetailsList>; 

Return View(); 
} 

Затем на вашем взгляде, использовать просто как

@If (ViewBag["SessionData"]!= null){ 
// Do jobs with SessionDetails what you want 
} 

Надеется, что это помогает.

+0

это работает. но теперь мое второе представление («Проверить») не отображается.но если я укажу URL-адрес в адресной строке, тогда отобразится. in herer, * с моего первого взгляда Я передаю выбранное значение методу getDatas. * затем выполните некоторые запросы в методе и затем захотите отобразить эти данные [сеанс] во втором представлении («проверить»). как я могу это сделать –

+0

Пожалуйста, вставьте свой код для secondview («check»), а затем я могу проверить его для вас, что вы вводите в URL-адрес? – InkHeart

+0

Заменить «Response.Redirect (« Проверить »,« Истина »); с «return RedirectToAction (« Проверить »); – InkHeart

0

Контроллер

public ActionResult Check() 

    { 
     var chk = Session["names"]; 
     List<Details> list = Session["names"] as List<Details>; 
     ViewBag.MyList = list ; 
     return View(); 

    } 

View

@ViewBag.MyList 

// e.g. 
@foreach (var item in ViewBag.MyList) { ... } 
0

Во-первых, лучше использовать ViewBag, ViewData и/или TempData при воспроизведении с MVC.

Использование довольно просто для всех трех. Вот шаги:

  1. Вы присвоить им некоторое значение/объект: ViewBag.SomeField = SomeValue;
  2. Вы используете их на свой вид сбоку: @ViewBag.SomeField.

Вот некоторые ссылку, которая определенно получит вас через:

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

Надеюсь, это поможет.