我在Index页面上有一个菜单控件呈现为<%Html.RenderPartial(“MenuUserControl”); %GT;其中MenuUserControl类似于
<li><%= Html.ActionLink("Link1","Index") %></li>
<li><%= Html.ActionLink("Link2", "Index")%></li>
<li><%= Html.ActionLink("Link3", "Index")%></li>
现在我想在Index页面中加载三个不同的表单,点击这些链接,第一个表单加载到Page load。我怎样才能做到这一点。任何帮助表示赞赏。
答案 0 :(得分:0)
如果您需要传递有关RenderPartial链接的信息
<% Html.RenderPartial("MenuUserControl", new[]{"link", "link"}); %>
然而,传递自定义模型(类对象)而不是字符串数组会更好。
使用Ajax.ActionLink加载表单而不重新加载页面。
要加载第一个表单,请在“索引”页面中执行此操作(添加HTML标记或调用RenderPartial以呈现表单,或使用RenderAction),或者将脚本添加到菜单部分,如此
<script type="text/javascript">
$(function(){ $("a").eq(0).click(); }
</script>
这需要jQuery。
如果你不知道我在说什么,你最好准备好学习。
答案 1 :(得分:0)
你需要某种类似jQuery的JavaScript库才能做到这一点,剩下的就是想象力:
- 您可以在pageload上预加载3个表单,然后在DOM ready(PageLoad)上隐藏最后两个表单。为方便起见,我将它包装在div中。
<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>
另一种选择是采用Ajax方式,但需要更多的jQuery代码和知识。 如果您有兴趣,请参阅http://docs.jquery.com/,这是jQuery的API参考。
如果您要转向MVC,我建议您学习任何JavaScript库来帮助您解决这种行为,有些人称之为DHMTL(动态HTML)。
答案 2 :(得分:0)
首先执行非Ajax版本。
有1页索引,里面有3个部分。每个部分只有表单中的html显示在其中。
在您的操作中设置ViewModel(此处为Action Link1)
model.IsForm1Visible = true;
在视图中使用模型显示部分
<div id="linkContainer">
<% if(Model.IsForm1Visible){%>
<%= Html.RenderPartial("Form1")%>
<%}%>
<% if(Model.IsForm2Visible){%>
<%= Html.RenderPartial("Form2")%>
<%}%>
<% if(Model.IsForm3Visible){%>
<%= Html.RenderPartial("Form3")%>
<%}%>
</div>
如果您需要Ajax,可以从那里继续。