Asp.net mvc 4 asp.net mvc从不同控制器调用单个视图

Asp.net mvc 4 asp.net mvc从不同控制器调用单个视图,asp.net-mvc-4,Asp.net Mvc 4,我有4个不同的ActionResult在2个不同的控制器中运行,我创建了一个部分视图StudentList,我想使用相同的部分视图,因为模型是相同的 从第一个ActionResult开始,我想按班级显示学生列表 从第二个动作结果中,我想显示班主任列出的学生名单 从第三个操作结果开始,我想按未支付的费用显示学生名单 从第四个动作结果中,我想按缺席学生显示学生列表 所有4个返回一个模型类型的学生。 带字段StudentName,ParentMobileNo 是否可以不创建4个不同的视图并使用单个局部

我有4个不同的ActionResult在2个不同的控制器中运行,我创建了一个部分视图StudentList,我想使用相同的部分视图,因为模型是相同的

从第一个ActionResult开始,我想按班级显示学生列表 从第二个动作结果中,我想显示班主任列出的学生名单 从第三个操作结果开始,我想按未支付的费用显示学生名单 从第四个动作结果中,我想按缺席学生显示学生列表

所有4个返回一个模型类型的学生。 带字段StudentName,ParentMobileNo

是否可以不创建4个不同的视图并使用单个局部视图或单个视图来显示结果


问候

是的。创建共享视图,并在从控制器返回ActionResult时传递视图名称

return View("StudentList", model);
或者,如果要从视图渲染局部,请执行以下操作:

@{ Html.RenderPartial("StudentList", model); }

创建将连接起来以使用学生模型的局部视图

然后在控制器中创建多个操作以返回不同的结果

StudentsByClass-然后在此操作中调用相关业务层/存储库来执行查询,只要它返回类型Student(或部分视图中使用的模型名称),就可以了

然后为每个场景创建另外三个操作,再次调用相关的业务/存储库方法进行查询。同样,只要它们返回与部分学生视图所期望的模型相同的模型,它就应该工作

然后,在每个操作中,返回视图以及要传递给模型的结果,如下所示:

return View("StudentList", model);

视图应该只关心显示传递给它的模型。模型的创建方式对视图应该是透明的。 在您的例子中,您可以有一个只显示传递给它的StudentList模型的视图。要生成此模型,您可以有一个动作方法或四个动作方法。 如果需要单操作方法,可以传递一个指示分组的参数

谢谢 普拉萨德