【发布时间】:2014-12-21 11:33:28
【问题描述】:
我搜索了很多,我在 stackoverflow 和其他网站上找到了很多解决方案,我尝试了很多,但没有一个对我有用。所以这就是我发布这个问题的原因。 我创建了三个局部视图。每个部分视图都有提交表单,我们可以在其中创建记录。在索引视图上,我创建了 3 个选项卡并在这三个选项卡中呈现了部分视图。当页面加载时,所有三个部分视图(表单)都会加载。我只想在页面加载时加载一个局部视图。然后,当用户单击选项卡时,应加载其他视图/表单。 假设如果用户单击“类”选项卡,那么 classesPartialView 应该加载到此选项卡中,其他选项卡也是如此。
<div role="tabpanel" class="nav">
学生 课程 分类
<div role="tabpanel" class="tab-pane active" id="student">
@Html.Action("CreateStudent", "StudentRecords")
</div>
<div role="tabpanel" class="tab-pane" id="class">
@Html.Action("CreateClass", "StudentRecords")
</div>
<div role="tabpanel" class="tab-pane" id="category">
@Html.Action("CreateCategory")
</div>
编辑:
$(function () {
$("#tabs").tabs({
beforeLoad: function (event, ui) {
ui.jqXHR.error(function () {
ui.panel.html(
"Couldn't load this tab. We'll try to fix this as soon as possible. " +
"If this wouldn't be a demo.");
});
}
});
});
编辑 2(更新):
@model IEnumerable<MvcApplication.tbStudentInfo>
@using MvcApplication.Models;
@{
ViewBag.Title = "Navigation Tabs";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<script src="../../Scripts/jquery-2.1.1.js" type="text/javascript"></script>
<div role="tabpanel" class="nav">
<ul id="tabs" class="nav nav-tabs" role="tablist">
<li role="presentation" ><a href="#student" data-toggle="tab">Student</a></li>
<li role="presentation" ><a href="#class" data-toggle="tab">Classes</a></li>
<li role="presentation" ><a href="#category" data-toggle="tab">Categories</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="student">
@Html.Action("CreateStudent", "StudentRecords")
</div>
<div role="tabpanel" class="tab-pane" id="class">
</div>
<div role="tabpanel" class="tab-pane" id="category"></div>
</div>
</div>
<script type='text/javascript'>
$(function () {
$("#tabs").tabs({
beforeLoad: function (event, ui) {
ui.jqXHR.error(function () {
ui.panel.html(
"Couldn't load this tab. We'll try to fix this as soon as possible. " +
"If this wouldn't be a demo.");
});
}
});
});
var isClassLoaded = false;
$('#class').click(function() {
if(isClassLoaded = false) {
return;
}
$(this).load('@Html.Action("CreateClass", "StudentRecords")');
isClassLoaded = true;
}
</script>
<script type="text/javascript">
var isCategoryLoaded = false;
$('#category').click(function() {
if(isCategoryLoaded) {
return;
}
$(this).load('@Html.Action("CreateCategory", "StudentRecords")');
isClassLoaded = true;
}
</script>
【问题讨论】:
-
没有理由你不能有 3 个表格,每个表格都分别提交 - 有什么问题?
-
斯蒂芬:我有三种不同的形式。我想通过单击选项卡将每个表单加载到选项卡中。意味着当用户单击选项卡然后表单加载时。基本问题是表单加载。加载索引页面时,会加载选项卡中的所有表单。
-
你会使用javascript/jquery处理每个tab的点击事件来加载相应的表单,但是在页面渲染的时候加载所有3个表单有什么问题?
-
我是 JQuery/Javascript 新手。因为我是被拘留者,所以这是公司给我的任务。说由于性能问题仅加载一个标签页,然后如果用户单击任何其他标签,则加载相应的部分视图。我希望现在你有问题了
-
但是您的问题表明您在加载 3 个表单时遇到了问题。如果用户点击 2 或 3 个选项卡,则会加载 2 或 3 个表单,因此您最终仍然会遇到同样的问题。
标签: javascript jquery asp.net-mvc-4 tabs