2015-05-15 4 views
2

Я пытаюсь передать данные с контроллера на представление и отображать эти данные. Но после многих попыток я не могу.Использование ViewData для передачи данных с контроллера для просмотра

код контроллера:

общественного ActionResult ValidSearch (ProductSearchParam зм) {

if (gp.IsCandidate) 
    { 
     ViewBag.abc="bob"; 
     List<ProductCandidate> prodClist = new List<ProductCandidate>(); 
     prodClist = Pcs.SearchParam(gp,0,100); 
     ViewBag.total = prodClist.Count; 
     return View("ValidSearchCandidate", prodClist); 
    } 
    else 
    { 
     List<Product> prodlist = new List<Product>(); 
     prodlist = Ps.SearchParam(gp,0,100); 
     ViewBag.total = prodlist.Count; 
     return View("ValidSearch", prodlist); 
    } 

    //return View(); 
} 

Посмотреть код:

<body> 
    <div> 

     <p>Bonjour @ViewBag.abc</p> 

Я даже попробовать TempData или ViewBag, но безуспешно.

Я не понимаю, почему значение не получает правильное представление. Может кто-нибудь помочь мне решить эту проблему?

+0

'TempData' не' ViewData'! Покажите, как вы пытались получить доступ к свойству 'ViewData' –

+0

Извините за мою ошибку, я все равно попробовал, и это не работает. –

ответ

1

В вашем примере вы использовали ViewData в контроллере и TempData в View

Если вы используете ViewData [ "Nom"] в контроллере, вы должны использовать ViewData [ "Nom"] в поле зрения. Используете ли вы, что вы не нарушаете орфографию объекта?

+0

Извините, я сделал это неправильно в примере, так или иначе, это не работает, если ViewData находится в Controller и View. –

+0

Вы вызываете ViewData внутри View или LayoutPage? –

+0

Я действительно не задаю вопрос, я называю ViewData, в части HTML (body) представления. –

6

Поскольку вы установили какое-либо имущество на ViewData на Controller, вы получите его на ViewData по адресу View. С другой стороны, у вас есть TempData, который используется, когда вам нужно передавать информацию между запросами на другой маршрут (перенаправляет на действие). Для образца:

public ActionResult ValidSearch(ProductSearchParam gp) 
{ 
    List<ProductCandidate> prodClist = new List<ProductCandidate>(); 

    ViewData["Nom"] = "bob"; 

    return View("ValidSearchCandidate", prodClist); 
} 

И в представлении:

@ViewData["Nom"].ToString() 

@foreach(var prod in Model) 
{ 
    <li>@prod.Name</li> 
} 
+0

Благодарим за отзыв, я пробовал ваш код вида, а ProductCandidate - это класс, который я сделал, поэтому он является «незаменимым» в представлении. –

1

Вы можете использовать для этого ViewBag

контроллер:

ViewBag.name= "bob"; 

Вид:

<p>Bonjour @ViewBag.name</p> 
+0

Использование .__ вместо ["__"] вызывает ошибку в коде контроллера. –

+0

, потому что вы используете ключевое слово "try". –

+0

попробуйте обновить ответ –

1

Замените ViewBag ["try"] на ViewData ["try"] в вашем коде контроллера.

И в условии else у вас нет никакого объявления ViewData ["try"], так что может быть вам нужно проверить ViewData перед его использованием на вашем представлении.

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