MVC仅从2个控制器中选择指定的ID

时间:2018-05-04 10:42:26

标签: asp.net-mvc entity-framework-6

我是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));
        }

希望这是有道理的,我感谢你们提供的任何帮助。

1 个答案:

答案 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));
}