使用 Ajax 仅加载或刷新部分视图

发布于 2024-12-27 09:39:23 字数 2221 浏览 1 评论 0原文

我有一个视图,我在其中加载了部分视图,我想刷新视图上的一个 div,而不加载整个视图。我的代码:


@* @Html.Action("MusicPlayer", "NewRelease")*@

      `@Html.Partial("_MusicPlayer")`


`@using (Ajax.BeginForm("Index", new AjaxOptions { `
                      `hereHttpMethod="GET",`                                             
                     `                                             InsertionMode = InsertionMode.Replace,
                                                                   UpdateTargetId = "albumlist"
                                                                }))
{
     <div id="newrealeaseformcontent">
            <h2>New Releases(@Model.Genre)</h2>
               <div id="daterangesearchcntrl"> 
                    @Html.HiddenFor(m => m.Genre)
                    @Html.Label("choose release date")   
                    @Html.TextBoxFor(m => m.DateRange, new { @readonly = "readonly", @id = "daterange" })
                    <input class="sb_search" type="submit" value=""/>
                </div> 
               <br />
               <br />
               <br />
            <div id="albumlist">
                <ul id="newreleasealbum-list">
                    @foreach (var album in Model.Albums)
                    {
                        <li style="margin-left:0px;padding-left:0px">
                            <a href="@Url.Action("AlbumPopup", new { id = album.AlbumId })" class="openPlayer">
                                <img alt="@album.Title" width="75" height="74" src="@album.AlbumPhoto.ThumbnailPath" />
                                <div class="clear"></div>
                           </a>
                        </li>
                    }
                </ul>
           <div class="clear"></div>
          </div>
    </div>  
}
</div> ` 

我想刷新“albumlist”div,而不在此视图上重新加载 Html.Partial("_MusicPlayer")。请帮忙。

提前致谢

I have a view which i load a partial view within it, I want to refresh one div on the view without loading the whole view. my code:

<div id="newrealeaseform">
<div id="newrealeaseformplayer">
@* @Html.Action("MusicPlayer", "NewRelease")*@
</div>

      `@Html.Partial("_MusicPlayer")`


`@using (Ajax.BeginForm("Index", new AjaxOptions { `
                      `hereHttpMethod="GET",`                                             
                     `                                             InsertionMode = InsertionMode.Replace,
                                                                   UpdateTargetId = "albumlist"
                                                                }))
{
     <div id="newrealeaseformcontent">
            <h2>New Releases(@Model.Genre)</h2>
               <div id="daterangesearchcntrl"> 
                    @Html.HiddenFor(m => m.Genre)
                    @Html.Label("choose release date")   
                    @Html.TextBoxFor(m => m.DateRange, new { @readonly = "readonly", @id = "daterange" })
                    <input class="sb_search" type="submit" value=""/>
                </div> 
               <br />
               <br />
               <br />
            <div id="albumlist">
                <ul id="newreleasealbum-list">
                    @foreach (var album in Model.Albums)
                    {
                        <li style="margin-left:0px;padding-left:0px">
                            <a href="@Url.Action("AlbumPopup", new { id = album.AlbumId })" class="openPlayer">
                                <img alt="@album.Title" width="75" height="74" src="@album.AlbumPhoto.ThumbnailPath" />
                                <div class="clear"></div>
                           </a>
                        </li>
                    }
                </ul>
           <div class="clear"></div>
          </div>
    </div>  
}
</div> ` 

I want to refresh the "albumlist" div without reloading the Html.Partial("_MusicPlayer") on this view. Please help.

thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独﹏钓一江月 2025-01-03 09:39:23

下面的代码不是精确的解决方案,只是一个想法

,这里是你的模型,就像

public class MusicModel
{
    private IList<Album> _albums;
    public MusicModel()
    {
        _albums = new List<Album>();
    }
    public int Id { get; set; }
    public string Genre { get; set; }
    public string DateRange { get; set; }
    public IList<Album> Albums { get { return _albums; } set { _albums = value; } }


}
public class Album
{
    public int AlbumId { get; set; }
    public string Title { get; set; }
    public string AlbumPath { get; set; }
}

这里是你的控制器

public ActionResult musicTest()
    {
        var model = new MusicModel();
        return View(model);
    }

    public JsonResult RefreshMusicList(int id)
    {
        var musicList = GetMovieListById(id);
        return Json(musicList);
    }

这是你的视图

@*Here is your model*@
@model ST.Web.Models.MusicModel 
@Html.Partial("_MusicPlayer")
<div id="newrealeaseformcontent">
    <h2>
        New Releases(@Model.Genre)</h2>
    <div id="daterangesearchcntrl">
        @Html.HiddenFor(m => m.Genre)
        @Html.Label("choose release date")
        @Html.TextBoxFor(m => m.DateRange, new { @readonly = "readonly", @id = "daterange" })
        <input class="sb_search" type="submit" value="" />
    </div>
    <br />
    <br />
    <br />
    <div id="albumlist">
        <a href="JavaScript:UpdateAlbumList('@(Model.Id)')">Update List</a> 
        <ul id="newreleasealbum-list">

            @foreach (var album in Model.Albums)
            {
                <li style="margin-left: 0px; padding-left: 0px">
                    <a href="@Url.Action("AlbumPopup", new { id = album.AlbumId })" class="openPlayer">
                        <img alt="@album.Title" width="75" height="74" src="@album.AlbumPath @*@album.AlbumPhoto.ThumbnailPath*@" />                        
                    </a>
                </li>
            }
        </ul>
        <div class="clear">
        </div>
    </div>
</div>

<script type="text/javascript">
function UpdateAlbumList(id)
{
    var action = "@(Url.Action("RefreshMusicList", "Sample"))";
    var postData = "id="+id;
    $.ajax({
        cache: false,
        type: "POST",
        dataType: 'JSON',
        url: action,
        data: postData,
        beforeSend: function () {            
            //showAjaxLoading(); //show the ajax loading panel
        },
        success: function (data) {
            //console.log(data);
            //here you can bind your movie list 
        },
        complete: function () {
            //hideAjaxLoading(); //hide ajax loading panel
        },
        error: function (xhr, ajaxOptions, thrownError) {
            //showError("Failed to update !!");
            alert(thrownError);
        }
    });
}
</script>

这里我使用jquery ajax从服务器获取最新的电影列表。希望它会有所帮助。

The following code is not exact solution just an idea

here is your model as like

public class MusicModel
{
    private IList<Album> _albums;
    public MusicModel()
    {
        _albums = new List<Album>();
    }
    public int Id { get; set; }
    public string Genre { get; set; }
    public string DateRange { get; set; }
    public IList<Album> Albums { get { return _albums; } set { _albums = value; } }


}
public class Album
{
    public int AlbumId { get; set; }
    public string Title { get; set; }
    public string AlbumPath { get; set; }
}

Here is your controller

public ActionResult musicTest()
    {
        var model = new MusicModel();
        return View(model);
    }

    public JsonResult RefreshMusicList(int id)
    {
        var musicList = GetMovieListById(id);
        return Json(musicList);
    }

Here is your view

@*Here is your model*@
@model ST.Web.Models.MusicModel 
@Html.Partial("_MusicPlayer")
<div id="newrealeaseformcontent">
    <h2>
        New Releases(@Model.Genre)</h2>
    <div id="daterangesearchcntrl">
        @Html.HiddenFor(m => m.Genre)
        @Html.Label("choose release date")
        @Html.TextBoxFor(m => m.DateRange, new { @readonly = "readonly", @id = "daterange" })
        <input class="sb_search" type="submit" value="" />
    </div>
    <br />
    <br />
    <br />
    <div id="albumlist">
        <a href="JavaScript:UpdateAlbumList('@(Model.Id)')">Update List</a> 
        <ul id="newreleasealbum-list">

            @foreach (var album in Model.Albums)
            {
                <li style="margin-left: 0px; padding-left: 0px">
                    <a href="@Url.Action("AlbumPopup", new { id = album.AlbumId })" class="openPlayer">
                        <img alt="@album.Title" width="75" height="74" src="@album.AlbumPath @*@album.AlbumPhoto.ThumbnailPath*@" />                        
                    </a>
                </li>
            }
        </ul>
        <div class="clear">
        </div>
    </div>
</div>

<script type="text/javascript">
function UpdateAlbumList(id)
{
    var action = "@(Url.Action("RefreshMusicList", "Sample"))";
    var postData = "id="+id;
    $.ajax({
        cache: false,
        type: "POST",
        dataType: 'JSON',
        url: action,
        data: postData,
        beforeSend: function () {            
            //showAjaxLoading(); //show the ajax loading panel
        },
        success: function (data) {
            //console.log(data);
            //here you can bind your movie list 
        },
        complete: function () {
            //hideAjaxLoading(); //hide ajax loading panel
        },
        error: function (xhr, ajaxOptions, thrownError) {
            //showError("Failed to update !!");
            alert(thrownError);
        }
    });
}
</script>

Here i use jquery ajax to get the latest movie list from server. Hope it will help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文