我正在ASP.NET MVC 2 Web应用程序中使用jQuery UI选项卡。应用程序的一部分要求我在切换标签时进行错误检查。我通过包含选项卡的aspx文件中的这个脚本来做到这一点。构建jQuery选项卡的更好方法
<script type="text/javascript">
$(function() {
$("#tabs").tabs({
cache: true,
select: function (event, ui) {
var $tabs = $('#tabs').tabs();
switch ($tabs.tabs('option', 'selected')) {
case 0:
$.post("User/Personal", $("#PersonalForm").serialize(), function (data, success) {
if (success) {
$("#PersonalForm").html(data);
}
});
break;
case 1:
$.post("User/Account", $("#AccountForm").serialize(), function (data, success) {
if (success) {
$("#AccountForm").html(data);
}
});
break;
default:
break;
}
return true;
},
ajaxOptions: {
error: function (xhr, status, index, anchor) {
$(anchor.hash).html("Couldn't load this tab. We will fix this as soon as possible.");
}
}
});
});
</script>
还有额外的switch语句(为简洁起见删除)。基本上,这段代码允许通过数据注释在标签上进行MVC验证 - 工作非常好。无论如何,我想知道是否可以根据我在文档中的任何标签“生成”该代码。 (如果不是,我基本上必须手动在switch语句中编写case语句,这看起来有点浪费)。
另外,作为一个备注,我使用每个选项卡的ASP控件持有各种数据(这也是个人形式所在的地方)。这可能会对解决方案产生影响。
是否所有选项卡的内容都是相同类型的,例如包含一个表单('PersonalForm','AccountForm')等,并且表单的'action'指向'$ .post()'应该被发送进行验证的地方? – 2010-07-13 23:39:23
@Simen - 每个选项卡包含一个表单,选项卡集合表示整个用户。 (您可以在前一页上选择一个用户,并获得一系列允许您输入用户的选项卡。)发送单个表单时,它对应于控制器类中的方法(选项卡中的每个表单有一个方法)。这是澄清事情吗? – JasCav 2010-07-14 15:28:31
有点 - 看我的答案,是否它解决了你的问题:) – 2010-07-14 16:37:08