c# - 每个选项卡都有单独的控制器/视图?
问题描述
我在 Asp.NET MVC 中创建一个应用程序。主页将包含几个选项卡,例如,学生和课程。
将有学生模型和课程模型。我想为每个包含新建、编辑、删除操作的控制器。前端看起来与此类似..
我想在每个选项卡的正文中使用部分视图。以第一个选项卡为例,当页面加载时,它会在选项卡主体中显示一个学生列表作为局部视图。在此局部视图中单击“添加学生”时,它将调用学生控制器中的一个操作,然后返回并在选项卡主体中显示一个局部视图,其中包含一个创建新学生的表单。发布此表格后,它将再次在选项卡正文中显示学生列表部分视图。
谁能指出我正确的方向或建议一种干净的方法来实现这一目标?
我的一个想法是对每个动作都有一个局部视图,例如:
<div class="tab-content" style="margin-top:20px;margin-left:10px;">
<div class="tab-pane fade active in" id="page-config-tab">
@Html.Partial("~/Views/Student/_List.cshtml")
@Html.Partial("~/Views/Student/_Add.cshtml")
@Html.Partial("~/Views/Student/_Edit.cshtml")
</div>
<div class="tab-pane fade" id="candidates-tab">
@Html.Partial("~/Views/Course/_List.cshtml")
@Html.Partial("~/Views/Course/_Add.cshtml")
@Html.Partial("~/Views/Course/_Edit.cshtml")
</div>
</div>
当单击按钮时,在调用控制器中的操作之前,我将使用 Jquery 在 div 中隐藏/显示相关的局部视图?
谢谢
解决方案
您可以使用 AJAX 调用返回正确局部视图的必要操作。在页面加载时将它们全部呈现是浪费的,因为一次只会显示 1 个局部视图。您的初始 HTML 应如下所示,仅呈现您需要的视图:
<div class="tab-content" style="margin-top:20px;margin-left:10px;">
<div class="tab-pane fade active in" id="page-config-tab">
@Html.Partial("~/Views/Student/_List.cshtml")
</div>
<div class="tab-pane fade" id="candidates-tab"></div>
然后,添加一个脚本块:
<script>
$(function() {
$('#addStudentBtn').click(function() {
$.ajax({
method: 'GET',
url: '@Url.Action("Add", "Student")',
success: function(data) {
$('#page-config-tab').html(data); // 'data' will be your partial view
}
});
});
});
</script>
我已经向您展示了添加学生的最低限度示例,您可以对每个操作使用这种通用方法。
PS 看起来您正在使用引导程序 - 它们具有您可以在更改选项卡时使用的事件处理程序:https ://getbootstrap.com/docs/3.3/javascript/#tabs-events
推荐阅读
- c# - 在解决方案中引用项目或程序集的最佳实践
- powerbi - DAX ALLEXCEPT 按多维表的类别求和
- c# - 使用新的 .NET SDK Azure.Messaging.EventHubs 使用 EventProcessorClient 进行检查点
- azure - 具有内部 IP 地址的天蓝色功能或 Web 服务
- java - 我正在尝试制作一个列出平方数的循环。我的 Java 代码有什么问题?
- node.js - Angular 项目没有满足我的要求
- r - 匹配和替换 R 中的行名
- pandas - 在pandas中取消堆叠数据框后的堆叠是不同的
- r - 使用向量中的相关位置来查找索引
- mathematical-optimization - 在混合整数线性规划 (MILP) 中对具有多个条件的 IF-THEN 语句进行建模