Обработка одной записи в бритвенном представлении с использованием ViewData - PullRequest
0 голосов
/ 15 декабря 2011

Использование ASP.Net MVC3 с C #.

В настоящее время я пытаюсь передать одну запись базы данных на страницу просмотра, создав собственный ротатор рекламы.

Вот код моего контроллера.

var rand = new Random((int) DateTime.Now.Ticks);
int numIterations = 0;
numIterations = rand.Next(1, 2);

CJAd cjad = db.CJAds.Single(c => c.category_id == 1 && c.ad_active == true && c.id == numIterations);

ViewData["SideBarAd"] = cjad;

Каждый пример кода, который я видел, показывает, как переключаться между несколькими записями. Как превратить ViewData на странице просмотра в объект базы данных и отобразить его?

Он попробовал это

@ViewData["SideBarAd"].ad_url

Но получил ошибку

CS1061: «объект» не содержит определения для «ad_url», и невозможно найти метод расширения «ad_url», принимающий первый аргумент типа «объект» (вы пропустили директиву using или ссылку на сборку?) 1015 *

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Почему бы вам просто не включить CJAd в модель представления? Это намного проще.

Однако, если вы настроены, используйте ViewBag вместо этого, тогда вам не нужно приводить.

ViewBag.SideBarAd = cjad;

по вашему мнению (при условии, что SideBarAd - это строка, которая является URL вашего объявления)

<img src="@ViewBag.SideBarAd"/>
1 голос
/ 15 декабря 2011

Вы можете попробовать это:

<div>@ViewBag.SideBarAd.SomeProperty</div>

где SomeProperty - это свойство класса CJAd, которое вы хотите отобразить в представлении.

При этом я бы порекомендовал вам использовать модели представления вместо ViewData:

public ActionResult Foo()
{
    var rand = new Random((int) DateTime.Now.Ticks);
    int numIterations = 0;
    numIterations = rand.Next(1, 2);
    var cjad = db.CJAds.Single(c => c.category_id == 1 && c.ad_active == true && c.id == numIterations);

    return View(cjad);
}

и затем в соответствующем строго типизированном представлении:

@model AppName.Models.CJAd
<div>@Html.DisplayFor(x => x.SomeProperty)</div>

Также для отображения рекламы на всех страницах вы можете взглянуть на Html.Action helper . Это может значительно упростить ваш код и отделить его от основной логики контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...