Имам MVC Index View с връзка, която при щракване извиква JQuery метод, който задейства Ajax POST за динамично зареждане на PartialView в div.
Вътре в PartialView имам формуляр, който, когато бъде изпратен, трябва да се презареди (частичният изглед) в div в индексния изглед.
Когато изпробвам кода по-долу, той дава изключение на паметта във Visual Studio.
Как да „презаредя“ частичния изглед по този начин? Мога ли да направя препратка към div в основния (съдържащ) изглед от PartialView?
Подходящи кодови фрагменти по-долу
Индексен изглед
<a href="/bg#" class="buttonId currentplayer" data-userteamid="60" data-footballclub="" data-searchstring="">click to load game 60</a>
<div id="teampartial"></div>
<script type="text/javascript">
var returnTeam = function (link) {
debugger;
var userTeamId = $(link).attr('data-userteamid');
var footballClub = $(link).attr('data-footballclub');
var searchString = $(link).attr('data-searchstring');
$.ajax({
type: 'POST',
url: '/ViewPlayers/TeamOverView',
data: {
userTeamId: userTeamId,
footballClub: footballClub,
searchString: searchString
},
success: function (data) {
$('#teampartial').empty();
$('#teampartial').append(data);
}
});
};
$('.buttonId').click(function () {
returnTeam(this);
});
Controller Action
[HttpPost]
public ActionResult TeamOverView(int userTeamId, string footballClub, string searchString)
{
var _teamOverView = _service.GetTeamOverViewViewModel((int)userTeamId, footballClub, searchString);
return PartialView("teamdetails", _teamOverView);
}
Частичен изглед на подробности за екипа
<h2>List of Players</h2>
using (Html.BeginForm("TeamOverView", "ViewPlayers", FormMethod.Post,new { id = "filterPlayers" }))
{
<p>
@Html.DropDownListFor(x => x.Clubs, new SelectList(Model.Clubs,"Value","Text"), "All")
Name: @Html.TextBox("searchString")
<input type="hidden" name="userTeamID" value="@Model.UserTeamId" />
<input type="submit" value="Filter" />
</p>
}
<table>
@foreach (var item in Model.PlayersSearchedFor)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
<script type="text/javascript">
var returnSelectTeam = function () {
debugger;
$.ajax({
type: 'POST',
url: '/ViewPlayers/TeamOverView',
data: $("#filterPlayers").serialize(),
success: function (data) {
$('#teampartial').empty();
$('#teampartial').append(data);
}
});
};
$('#filterPlayers').submit(function () {
returnSelectTeam();
});
</script>