Asp.net mvc 根据在ASP.NET MVC中单击的链接,在索引页上显示不同的表单

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>

我在索引页上有一个菜单控件,呈现为其中的MenuUserControl类似于

  <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>