在视图页面中使用局部视图

时间:2011-03-25 03:56:26

标签: asp.net asp.net-mvc-2

我正在使用普通视图页面。我有一个AJAX表单。当我单击此表单上的提交按钮时,我必须能够更新部分视图。但是我尝试使用这个选项,发现页面请求需要很多时间来渲染,我确信我更多地搞砸了这个过程。

这是我使用过的代码,

  1. 在控制器内部,

    public ActionResult Index()
    {
        Users allUsers = new Users();
        if (Request.IsAjaxRequest())
        return View("Index", allUsers.GetAllUsers());
       else
        return View(allUsers.GetAllUsers());
    }
    
  2. 部分视图[index.ascx]

        <%@ Control Language="C#"    Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Model.Users>>" %>
       <table>
         <tr>
          <th>
         </th>
            <th>
                 firstname
           </th>
           <th>
                 userid
           </th>
           <th>
                 dob
           </th>
           <th>
              address
           </th>        
      </tr>
      <% foreach (var item in Model)
          { %>
       <tr>
          <td>
             <%: Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %>
             |
             <%: Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ })%>
             |
             <%: Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })%>
         </td>
         <td>
             <%: item.firstname %>
         </td>  
         <td>
             <%: item.userid %>
         </td>
         <td>
            <%: String.Format("{0:g}", item.dob) %>
        </td>
        <td>
            <%: item.address %>
        </td>
       </tr>
              <% } %>
        </table>
       <p>
        <%: Html.ActionLink("Create New", "Create") %>
         </p>
    

    index.aspx页面,

            <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
            <% using (Ajax.BeginForm("Index", new AjaxOptions
           {
               UpdateTargetId = "results"
           }))
               { %>
            <input id="Submit1" type="submit" value="submit" />
            <% } %>
            <div id="results">
                <% Html.RenderPartial("Index", ViewData.Model); %>
            </div>
            <h2>
                Index</h2>
            <table>
                <tr>
                    <th>
                    </th>
                    <th>
                        firstname
                    </th>
                    <th>
                        userid
                    </th>
                    <th>
                        dob
                    </th>
                    <th>
                        address
                    </th>
                </tr>
                <% foreach (var item in Model)
                   { %>
                <tr>
                    <td>
                        <%: Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %>
                        |
                        <%: Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ })%>
                        |
                        <%: Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })%>
                    </td>
                    <td>
                        <%: item.firstname %>
                    </td>
                    <td>
                        <%: item.userid %>
                    </td>
                    <td>
                        <%: String.Format("{0:g}", item.dob) %>
                    </td>
                    <td>
                        <%: item.address %>
                    </td>
                </tr>
                <% } %>
            </table>
            <p>
                <%: Html.ActionLink("Create New", "Create") %>
            </p>
        </asp:Content>
    

2 个答案:

答案 0 :(得分:0)

请尝试

return PartialView("index",allUsers.GetAllUsers())

如果是ajax请求。我怀疑控制器在你打电话时发送了Viewpage

return View("index", allUsers.GetAllUsers());

反过来渲染部分页面,从而在此过程中产生某种混乱。相反,您可以尝试将您的部分页面重命名为index1和

return View("index1", allUsers.GetAllUsers());

答案 1 :(得分:0)

我自己解决了这个问题,这是一个很好的挑战。我已将ajax链接放在usercontrol中,然后将结果div放在索引页面中,其中使用相同的partialview控件呈现数据。

然后在控制器的action方法中,我调用了返回部分视图(viewname和model data)。

这就是诀窍......事情已经完成了。无论如何,谢谢你的帮助到目前为止。