У меня есть следующий сценарий:
У меня есть строго типизированное частичное представление, которое отображает информацию для модели представления с именем PlaceVieWModel, которая отображается внутри строго типизированного представления для MainPlaceViewModel.
Классы:
public class PlaceViewModel
{
public int PlaceID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public decimal Latitude { get; set; }
public decimal Longitude { get; set; }
public bool HasLiveMusic { get; set; }
}
public class MainPlaceViewModel
{
public string Name { get; set; }
public string Description { get; set; }
public List<PlaceViewModel> Places { get; set; }
public string WebPage { get; set; }
public string LogoRoute { get; set; }
public string LogoDetailCssClass { get; set; }
}
В представлении MainPlaceModelView я генерирую Ajax.ActionLink для каждого из MainPlaceViewModel.Places, который получает информацию для этого Места и отображает ее в частичном представлении, это код для этого:
@foreach (var item in Model.Places)
{
@Ajax.ActionLink(item.Name, "", "", new AjaxOptions { Url = Url.Action("GetPlaceInfo", "MainPlaces", new { placeId = item.PlaceID }), HttpMethod = "GET", UpdateTargetId = "placeInfo", InsertionMode = InsertionMode.Replace, LoadingElementId = "loading" })
}
Это действие:
public PartialViewResult GetPlaceInfo(int placeID)
{
var place = _db.Places.SingleOrDefault(p => p.PlaceID == placeID);
PlaceViewModel placeViewModel = new PlaceViewModel();
placeViewModel.Address = place.Address;
placeViewModel.HasLiveMusic = place.HasLiveMusic;
placeViewModel.Latitude = place.Latitude;
placeViewModel.Longitude = place.Longitude;
placeViewModel.Name = place.Name;
placeViewModel.PlaceID = place.PlaceID;
return PartialView("_PlaceInfo", placeViewModel);
}
Моя проблема в том, как мне инициализировать @ Html.Partial, если я делаю это так:
<div id="loading" style="display:none;">
Loading...
</div>
<div id="palceInfo">
@Html.Partial("_PlaceInfo", Model.Places.FirstOrDefault())
</div>
Частичное представление всегда показывает первый элемент независимо от того, какой Ajax.ActionLink нажат.
Есть идеи о том, как его инициализировать, чтобы он также работал при нажатии любой из ссылок ActionLink?
ОБНОВЛЕНИЕ: Проблема была в опечатке в моем целевом div, идентификатор был "palceInfo", и я устанавливаю ссылку действия для обновления "placeInfo", я не могу поверить, что потерял так много времени из-за этого.