我希望我能得到這個一些想法改變視圖模型屬性:未做頁閃光燈
林試圖創建一個進出口工作在網站上的「查看更多結果」功能。目前,有10個項目的列表正在使用剃刀語法顯示。
@foreach (Movie m in Model.MovieList)
{
<li>
@Html.RouteLink("Details", "Details", new { detailsId = m.Id }, new { @class = "hidden double-click-href" })
<h1>
@(m.CurrentIdentifier): @m.MovieTitle
<span class="right">@m.Movie.Description</span>
</h1>
<div class="fields">
<span class="label">Release Date</span>
<span class="value">@m.CreatedOn.ToShortDateString()</span>
<span class="label">Genre</span>
<span class="value">@m.Genre.Name</span>
</div>
</li>
}
有一個鏈接「顯示更多結果」,單擊時,將通過查詢將下10個個案附加到列表中。我能想到的唯一方法就是創建一個使用JQuery的ajax調用,它將調用一個動作,返回JSON結果和我需要的信息,然後填充一個字符串,該字符串是HTML的「模板」(重複)以上使用JavaScript方法。
問題是,我不喜歡HTML基本上被複制的事實,如果我試圖在調用動作期間填寫MovieList屬性(我需要使它成爲ajax或類似的東西,以便存在沒有「閃爍」),直到頁面刷新纔會被拾取。
是否有一個很好的方法來設置MovieList屬性,以便我不必重複HTML並仍然進行ajax調用(不是頁面回發)?
編輯:
我試圖@Jamie迪克森的建議,而我看到的要求,我可以看到正在返回正確的HTML,它沒有更新頁面(頁面停留完全與之前我點擊鏈接相同)。這裏是JavaScript:
function GetMovieList() {
var url = location.pathname + '/Filter';
var size = $('#my-movie-list > li').size();
$.ajax({
type: "GET",
url: url,
data: { fromNumber: size }, //the number of rows already displayed
contentType: "application/x-www-form-urlencoded",
success: function (data) {
SetShowMoreResultsFeatures(); //checks to see if the 'Show More Results' link should be disabled and some other stuff.
}
});
}
這裏是控制器的方法:
[Route("/Filter")]
public ActionResult GetFilteredMovies(int fromNumber)
{
ViewData.Model = new DashboardIndexViewModel
{
CurrentUser = CurrentUser.User,
MyCalendar = new CalendarListView(CurrentUser.User),
CaseCount = movieQuery.Execute(CurrentUser.User.Id).Count(),
Movies= GetMovies(fromNumber)
};
return View("_MovieItem", ViewData.Model);
}
,這裏是局部視圖 「_MovieItem」:
@model Matrix.Investigator.Website.ViewModels.Dashboard.DashboardIndexViewModel
@foreach (Movie m in Model.MovieList)
{
<li>
@Html.RouteLink("Details", "Details", new { detailsId = m.Id }, new { @class = "hidden double-click-href" })
<h1>
@(m.CurrentIdentifier): @m.MovieTitle
<span class="right">@m.Movie.Description</span>
</h1>
<div class="fields">
<span class="label">Release Date</span>
<span class="value">@m.CreatedOn.ToShortDateString()</span>
<span class="label">Genre</span>
<span class="value">@m.Genre.Name</span>
</div>
</li>
}
我更新了所有內容,雖然我可以看到正在創建的正確html,並且從請求中返回,但它並沒有更新頁面,所以我繼續看到前10個電影,而不是我點擊鏈接後應該看到的20個電影。我究竟做錯了什麼?爲了讓您知道,「索引」是部分視圖在頁面初始加載時被調用的視圖的名稱。任何其他想法? –
成功處理程序觸發時,數據變量中的內容是什麼? –
你的方法SetShowMoreResultsFeatures(),這是如何從你的ajax調用中獲取數據的?這個函數裏面發生了什麼?我猜你需要將數據傳遞給它? –