Как вернуть один элемент по его идентификатору в веб-матрице? - PullRequest
1 голос
/ 12 мая 2011

Как я могу запросить базу данных с помощью Web Matrix, чтобы получить один элемент, передавая идентификатор с другой страницы?

Примечание.в веб-матрице, используя:@RenderPage("/page_name.cshtml")

Я пытаюсь составить <ul> из двух таблиц и страниц.Таблица служб, с которой связана таблица ServiceFeatures.Это WebMatrix, он выбирает связь, назначая serviceID таблице ServieFeatures, то есть ServieId таблицы Services.

Так что у меня есть две страницы для отображения <ul> one _ServiceList.cshtml , который имеет следующее:

@{
var db = Database.Open("winmodb");
var servicesSql = "SELECT * FROM Services WHERE Featured = 'true'";
var services = db.Query(servicesSql);

}

<div id="service-list">
@foreach(var service in services) {        
    <h2>@service.Name</h2>
    <ul>
        @RenderPage("~/shared/_ServiceFeature.cshtml", @serviceId);
    </ul>
}

И внутри _ServiceFeature.cshtml У меня есть следующее.

   @{
   var db = Database.Open("database");        
   var serviceFeatureSql = "SELECT * FROM ServiceFeatures WHERE ServiceId = @0";       
   var serviceFeature = db.QuerySingle(serviceFeatureSql, serviceId);    
}

<li>@serviceFeature.Name</li>

Но это не работает, и я не уверен, должен ли я передавать переменную или нет.Я знаю, что serviceId не существует в текущем контексте, вот где я застрял.

Ответы [ 2 ]

0 голосов
/ 12 мая 2011

На странице _ServiceList ваш вызов RenderPage должен выглядеть следующим образом:

@RenderPage("~/shared/_ServiceFeature.cshtml", service.serviceId) 

В _ServiceFeature вы можете получить значение serviceId, используя Page [0]:

db.QuerySingle(serviceFeatureSql, Page[0]);
0 голосов
/ 12 мая 2011

Параметры передаются в свойствах PageData (не динамический) или Page (динамический):

@RenderPage("~/shared/_ServiceFeature.cshtml", new { serviceId });

На неполной странице вы можете написать

db.QuerySingle(serviceFeatureSql, Page.serviceId);

Чтобы получить доступ к параметрам по имени, необходимо передать их как анонимный тип.

...