Asp.net mvc 根据在ASP.NET MVC中单击的链接,在索引页上显示不同的表单
我在索引页上有一个菜单控件,呈现为其中的MenuUserControl类似于Asp.net mvc 根据在ASP.NET MVC中单击的链接,在索引页上显示不同的表单,asp.net-mvc,Asp.net Mvc,我在索引页上有一个菜单控件,呈现为其中的MenuUserControl类似于 <li><%= Html.ActionLink("Link1","Index") %></li> <li><%= Html.ActionLink("Link2", "Index")%></li> <li><%= Html.ActionLink("Link3", "Index")%></li>
<li><%= Html.ActionLink("Link1","Index") %></li>
<li><%= Html.ActionLink("Link2", "Index")%></li>
<li><%= Html.ActionLink("Link3", "Index")%></li>
现在,只要点击这些链接,我想在索引页面中加载三个不同的表单,第一个表单在页面加载中加载。我怎样才能做到这一点。非常感谢您的帮助。如果您需要传递有关RenderPartial链接的信息
<% Html.RenderPartial("MenuUserControl", new[]{"link", "link"}); %>
不过,传递自定义模型(类对象)比传递字符串数组更好
使用Ajax.ActionLink加载表单而不重新加载页面
要加载第一个表单,可以在索引页本身中执行此操作(添加HTML标记或调用RenderPartial来呈现表单,或使用),或者像下面这样将脚本添加到菜单部分
<script type="text/javascript">
$(function(){ $("a").eq(0).click(); }
</script>
$(函数(){$(“a”).eq(0)。单击();}
不过,这需要jQuery
如果你不知道我在说什么,那么你最好准备学很多东西。你需要像jQuery这样的JavaScript库来完成这项工作,剩下的就是想象: -您可以在pageload上预加载这3个表单,然后在DOM ready(pageload)上隐藏最后两个表单
<script type="text/javascript">
$(document).ready(function () { //This is like DOM ready
//here we hide the the last 2 forms
$('#div_id_form2').hide();
$('#div_id_form3').hide();
//Next set the events for the links (on click show form)
//on link 2 click
$('#link2').click(function(){
//show the second form
$('#div_id_form2').show();
});
//on link 3 click
$('#link3').click(function(){
//show the third form
$('#div_id_form3').show();
});
});
</script>
$(document).ready(函数(){//这类似于DOM ready
//这里我们隐藏了最后两个表单
$('#div_id_form2').hide();
$('#div_id_form3').hide();
//接下来设置链接的事件(单击“显示表单”)
//点击链接2
$('#link2')。单击(函数(){
//显示第二种形式
$('#div_id_form2').show();
});
//点击链接3
$('#link3')。单击(函数(){
//显示第三种形式
$('div#id_form3').show();
});
});
另一种选择是采用Ajax方式,但需要更多的代码和jQuery知识。
如果您感兴趣,请参阅这是jQuery的API参考
如果您正在转向MVC,我建议您学习任何JavaScript库,以帮助您处理这种被称为DHMTL(动态HTML)的行为。首先学习非Ajax版本 有一个包含3个部分的页面索引。每个部分只有表单要显示的html 在操作中设置ViewModel(此处为操作链接1) 在视图中,使用模型来显示分部
<div id="linkContainer">
<% if(Model.IsForm1Visible){%>
<%= Html.RenderPartial("Form1")%>
<%}%>
<% if(Model.IsForm2Visible){%>
<%= Html.RenderPartial("Form2")%>
<%}%>
<% if(Model.IsForm3Visible){%>
<%= Html.RenderPartial("Form3")%>
<%}%>
</div>
如果您需要Ajax,可以从那里继续
<div id="linkContainer">
<% if(Model.IsForm1Visible){%>
<%= Html.RenderPartial("Form1")%>
<%}%>
<% if(Model.IsForm2Visible){%>
<%= Html.RenderPartial("Form2")%>
<%}%>
<% if(Model.IsForm3Visible){%>
<%= Html.RenderPartial("Form3")%>
<%}%>
</div>