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

Razor 如何通过web矩阵中的id返回单个项目?,razor,sql-server-ce,webmatrix,Razor,Sql Server Ce,Webmatrix,如何使用Web Matrix查询数据库,通过从另一个页面传入ID来获取单个项目 注意:我的很多UI都使用了部分页面,这些只是webmatrix中的页面,使用:@RenderPage/page_name.cshtml 我试着用两张表格和两页纸组成一个表格。具有关联ServiceFeatures表的服务表。它通过将serviceID分配给servicefeatures表(即Services表的serviceID)来获取关系 因此,我有两个页面来呈现一个_ServiceList.cshtml,它具有以

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

注意:我的很多UI都使用了部分页面,这些只是webmatrix中的页面,使用:@RenderPage/page_name.cshtml

我试着用两张表格和两页纸组成一个表格。具有关联ServiceFeatures表的服务表。它通过将serviceID分配给servicefeatures表(即Services表的serviceID)来获取关系

因此,我有两个页面来呈现一个_ServiceList.cshtml,它具有以下内容:

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

在_servicefeact.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在当前上下文中不存在,这就是我遇到的问题。

参数在PageData非动态或页面动态属性中传递:

@RenderPage("~/shared/_ServiceFeature.cshtml", new { serviceId });
在部分页面中,您可以编写

db.QuerySingle(serviceFeatureSql, Page.serviceId);

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

在\u ServiceList页面中,您的RenderPage调用应该如下所示:

@RenderPage("~/shared/_ServiceFeature.cshtml", service.serviceId) 
在_ServiceFeature中,您可以使用页面[0]获取serviceId的值:

db.QuerySingle(serviceFeatureSql, Page[0]);

我想你需要一个带有页面数据的字符串索引器。动态属性与速记“页面”版本配合使用。在调用中不需要@。是的,它需要;它误导了人们对"的使用,这已经够让人迷惑的了。
db.QuerySingle(serviceFeatureSql, Page[0]);