none
asp.net mvc 2 动态调用局部视图 RRS feed

  • 问题

  • 你好:请问在mvc 2 里面如下的功能怎么实现:在点击"修改密码"的时候,右面部分显示"修改密码"的局部视图,在点击"修改邮箱"的时候,右面部分显示"修改邮箱"的局部视图,多谢
    2011年12月25日 15:11

答案

  • 你好:

    "点击时候才要加载视图,那就要用jQuery Ajax的方式来取得另一个View(.aspx)的Html,来放在画面上",我就是想用jquery ajax的方式来取得view,但不知道怎么做,不知道,你有没有demo提供一下,多谢


    不知能否分享一下,什么原因一定要让您使用jQuery Ajax的方式?

    Sample Code:

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplicationTest.Models.Customer>>" %>
    <!DOCTYPE html>
    <html>
    <head id="Head1" runat="server">
        <title>Test</title>
        <script src='<%= Page.ResolveUrl("~")+"Scripts/jquery-1.4.4.min.js" %>' type="text/javascript"></script>
        <script type="text/javascript">
            function showArea(area) {
                if (area == "pwd") {
                    //修改密码
                    $.ajax({
                        url: '/Home/readUser',
                        type: 'post',
                        data: {},
                        async: false,
                        success: function (htmlVal) {
                            $("#result").html(htmlVal);
                        },
                        error: function (e) {
                            alert("error");
                        }
    
                    });
    
                }
            
            
            }
        </script>
    
    </head>
    <body>
       
       <a href="javascript:showArea('pwd');">修改密码</a>
       <div id="result">
       
       
       </div>
    </body>
    </html>
    
    

     

    public class HomeController : Controller
        {
    
            [HttpPost]
            public ActionResult readUser()
            {
                //从Session里读取User帐户
    
                //再从DB里取得密码
                string password = "test";
    
    
    
                ViewData["password"] = password;
    
                return View();
              
            }
    

     

    readUser.aspx

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
    
    
    <%  using(Html.BeginForm("savePassword","Home",FormMethod.Post)){ %>
        
        <input type="password" value='<%= ViewData["password"] %>' />
        <input type="submit" value="提交" />
     <%   } %>
    
    

     


    • 已标记为答案 逍遥客 2011年12月27日 6:41
    2011年12月27日 3:08

全部回复

  • 你好:请问在mvc 2 里面如下的功能怎么实现:在点击"修改密码"的时候,右面部分显示"修改密码"的局部视图,在点击"修改邮箱"的时候,右面部分显示"修改邮箱"的局部视图,多谢


    Step 1.先把局部视图全都放到画面上
    Step 2.除了修改密码外,其他视图默认不显示

    Step 3.透过jQuery去显示/隐藏局部视图

     

    Sample Code:

    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
      
    </asp:Content>
    
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
      
        <script src='<%= Page.ResolveUrl("~")+"Scripts/jquery-1.4.1.min.js" %>' type="text/javascript"></script>
        <script type="text/javascript">
            function changePartialView(area) {
                if (area=="view1") {
                    $(".view1").show(0);
                    $(".view2").hide(0);
                } else  if(area=="view2"){
                    $(".view1").hide(0);
                    $(".view2").show(0);
                }
            
            }
        
        </script>
        <style type="text/css">
        
        .view2
        {
         display:none;     
        }
        
        </style>
        
        <a href="javascript:changePartialView('view1');">"修改密码</a><br />
        <a href="javascript:changePartialView('view2');">"修改邮箱</a>
        <div class="view1">
        <%= Html.Partial("ViewUserControl1") %>
        </div>
        <div class="view2">
        <%= Html.Partial("ViewUserControl2") %>
        </div>
    </asp:Content>
    
    


    2011年12月25日 16:51
  • 你好:非常感谢你的回答,我想能不能再在点击的连接的时候,加载这些局部视图呢
    2011年12月26日 14:48
  • 点击时候才要加载视图,那就要用jQuery Ajax的方式来取得另一个View(.aspx)的Html,来放在画面上

    但刚看了您的另一帖内容(http://social.msdn.microsoft.com/Forums/zh-CN/295/thread/99b11f3a-fce9-462d-a2b6-3b93d935bb7e)

    您可以把左方画面做成MasterPage,"修改密码"和"修改邮箱"就只是单纯地连结不同的.aspx(套同一个Masterpage)

    套MasterPage的方式应该会比较方便


    2011年12月26日 15:03
  • 你好:

    "点击时候才要加载视图,那就要用jQuery Ajax的方式来取得另一个View(.aspx)的Html,来放在画面上",我就是想用jquery ajax的方式来取得view,但不知道怎么做,不知道,你有没有demo提供一下,多谢

    2011年12月27日 1:30
  • 你好:

    "点击时候才要加载视图,那就要用jQuery Ajax的方式来取得另一个View(.aspx)的Html,来放在画面上",我就是想用jquery ajax的方式来取得view,但不知道怎么做,不知道,你有没有demo提供一下,多谢


    不知能否分享一下,什么原因一定要让您使用jQuery Ajax的方式?

    Sample Code:

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplicationTest.Models.Customer>>" %>
    <!DOCTYPE html>
    <html>
    <head id="Head1" runat="server">
        <title>Test</title>
        <script src='<%= Page.ResolveUrl("~")+"Scripts/jquery-1.4.4.min.js" %>' type="text/javascript"></script>
        <script type="text/javascript">
            function showArea(area) {
                if (area == "pwd") {
                    //修改密码
                    $.ajax({
                        url: '/Home/readUser',
                        type: 'post',
                        data: {},
                        async: false,
                        success: function (htmlVal) {
                            $("#result").html(htmlVal);
                        },
                        error: function (e) {
                            alert("error");
                        }
    
                    });
    
                }
            
            
            }
        </script>
    
    </head>
    <body>
       
       <a href="javascript:showArea('pwd');">修改密码</a>
       <div id="result">
       
       
       </div>
    </body>
    </html>
    
    

     

    public class HomeController : Controller
        {
    
            [HttpPost]
            public ActionResult readUser()
            {
                //从Session里读取User帐户
    
                //再从DB里取得密码
                string password = "test";
    
    
    
                ViewData["password"] = password;
    
                return View();
              
            }
    

     

    readUser.aspx

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
    
    
    <%  using(Html.BeginForm("savePassword","Home",FormMethod.Post)){ %>
        
        <input type="password" value='<%= ViewData["password"] %>' />
        <input type="submit" value="提交" />
     <%   } %>
    
    

     


    • 已标记为答案 逍遥客 2011年12月27日 6:41
    2011年12月27日 3:08