Ode*_*ode 64

您可以在ASP.NET MVC中使用局部视图来获得类似的行为.部分视图仍然可以在服务器上构建HTML,您只需要将HTML插入正确的位置(事实上,如果您愿意包含MSFT Ajax库,MVC Ajax帮助程序可以为您设置).

在主视图中,您可以使用Ajax.Begin表单来设置异步请求.

    <% using (Ajax.BeginForm("Index", "Movie", 
                            new AjaxOptions {
                               OnFailure="searchFailed", 
                               HttpMethod="GET",
                               UpdateTargetId="movieTable",    
                            }))

       { %>
            <input id="searchBox" type="text" name="query" />
            <input type="submit" value="Search" />            
    <% } %>

    <div id="movieTable">
        <% Html.RenderPartial("_MovieTable", Model); %>
   </div>
Run Code Online (Sandbox Code Playgroud)

部分视图封装了您要更新的页面部分.

<%@ Control Language="C#" Inherits="ViewUserControl<IEnumerable<Movie>>" %>

<table>
    <tr>       
        <th>
            Title
        </th>
        <th>
            ReleaseDate
        </th>       
    </tr>
    <% foreach (var item in Model)
       { %>
    <tr>        
        <td>
            <%= Html.Encode(item.Title) %>
        </td>
        <td>
            <%= Html.Encode(item.ReleaseDate.Year) %>
        </td>       
    </tr>
    <% } %>
</table>
Run Code Online (Sandbox Code Playgroud)

然后设置控制器操作以处理这两种情况.部分视图结果适用于asych请求.

public ActionResult Index(string query)
{          
    var movies = ...

    if (Request.IsAjaxRequest())
    {
        return PartialView("_MovieTable", movies);
    }

    return View("Index", movies);      
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • 我喜欢这个答案! (6认同)