如何通过web矩阵中的id返回单个项目?

时间:2011-05-12 16:23:24

标签: razor sql-server-ce webmatrix

如何通过从另一个页面传入ID来使用Web Matrix查询数据库以获取单个项目?

注意:我正在使用部分页面用于我的UI,这些只是webmatrix中的页面,使用:
@RenderPage("/page_name.cshtml")

我正在尝试从两个表和页面组成<ul>。具有关联的ServiceFeatures表的Services表。 WebMatrix它通过为ServieFeatures表分配serviceID来获取关系,该表是Services表的ServieId。

所以我有两个页面来呈现<ul>一个 _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 :(得分:0)

参数在PageData(非动态)或Page(动态)属性中传递:

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

在部分页面中,您可以编写

db.QuerySingle(serviceFeatureSql, Page.serviceId);

为了按名称访问参数,您需要以匿名类型传递。

答案 1 :(得分:0)

在_ServiceList页面中,您的RenderPage调用应如下所示:

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

在_ServiceFeature中,您可以使用Page [0]:

获取serviceId的值
db.QuerySingle(serviceFeatureSql, Page[0]);