我是MVC和C#的新手并且有一个问题。我有一个MVC项目并使用Entity Framework我从数据库创建了我的模型。 我已经创建了一个带有详细信息视图的属性控制器,我还设置了一个样本控制器和视图。样本和属性表由数据库中的Property Id链接。 在属性的详细信息页面上,我设置了一个按钮,打开了Samples索引页面,但我希望它只显示与所选属性链接的样本。如何仅选择具有所选属性ID的样本?
以下是我在属性详情页面上创建的按钮
<input type="button" value="Samples Summary" class="btn btn-primary" onclick="@("window.location.href='" + @Url.Action("Index", "Sample") + "'");" />
这是我的索引
的样本控制器 public ActionResult Index(int? pageNumber)
{
var samples = db.Samples.Include(s => s.Property).
var records = db.Samples.AsQueryable();
return View(records.OrderBy(i => i.Id).ToPagedList(pageNumber ?? 1, 50));
}
希望这是有道理的,我感谢你们提供的任何帮助。
答案 0 :(得分:0)
将选定的PropertyId
传递给您的索引操作。我假设“Property”页面在其ViewModel中具有当前ID。
<input type="button" onclick="@("window.location.href='" + @Url.Action("Index", "Sample", new { propertyId = Model.PropertyId }) + "'");" />
然后使用传递的PropertyId
使用Where
子句过滤样本。
public ActionResult Index(int propertyId, int? pageNumber) {
var samples = db.Samples
.Include(s => s.Property)
.Where(s => s.Property.Id == propertyId);
// don't know why are you retrieving all samples again into "records"
// in the code you have shown?
return View(samples.OrderBy(i => i.Id).ToPagedList(pageNumber ?? 1, 50));
}