根据在ASP.NET MVC中单击的链接,在“索引”页面上显示不同的表单

时间:2009-11-18 14:52:38

标签: asp.net-mvc

我在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。我怎样才能做到这一点。任何帮助表示赞赏。

3 个答案:

答案 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,可以从那里继续。