我试图从JavaScript视图到控制器发布2个参数,但我得到这个错误。不知道为什么…Failed to load resource: the server responded with a status of 500 (Internal Server Error)
transfer.js
$(document).ready(function () {
$("#transferPlayerButton").click(function () {
var playerId = document.getElementById("id_player").value;
var teamId = document.getElementById("id_team").value;
$.ajax({
type: 'post',
url: '/Player/TransferPlayer',
data:
{
playerId: playerId,
newTeamId: teamId
},
contentType: 'application/json;charset=utf-8',
dataType: 'json',
success: function (data) {
alert("Success!");
}
});
});
});
[HttpPost]
public ActionResult TransferPlayer(int playerId, int newTeamId)
{
return Content(string.Format("Player {0} it is now at team {1}.", playerId, newTeamId));
}
,这是我的观点。我已经映射对象到数据库对象,但我能弄清楚为什么我得到这个500错误。需要一些帮助。我是mvc/javascript的新手
@model FotballTeamsProject.Models.PlayerModels.PlayerTransferModel
<script src="@Url.Content("~/Scripts/Player/Transfer.js")"></script>
<script type="text/javascript">
var transferUrl= "@Url.Action("TransferPlayer", "Player")";
</script>
<table>
<thead>
<tr>
<th>ID</th>
<th>Nume</th>
<th>Prenume</th>
<th></th>
<th>Skill</th>
<th>Valoare</th>
<th></th>
<th>Echipa Actuala</th>
<th style="margin-right: 10px;">Echipa Viitoare</th>
</tr>
</thead>
<tbody>
<tr>
<td id="id_player">@Model.Player.id_player</td>
<td>@Model.Player.player_firstname</td>
<td>@Model.Player.player_surname</td>
<td></td>
<td>@Model.Player.player_skill</td>
<td>@Model.Player.player_value</td>
<td></td>
<td>@Model.Player.name_team</td>
<td style="text-align: right;">
<select id="id_team">
<option selected="selected" value="0">Fara echipa</option>
@foreach (var teamInfo in Model.Teams)
{
<option value="@teamInfo.Key">@teamInfo.Value</option>
}
</select>
</td>
</tr>
</table>
</tbody>
<p>
<input id="transferPlayerButton" type="button" value="Transfera" />
</p>
在AJAX调用中,这样传递数据:
data: JSON.stringify({ playerId: playerId, newTeamId: teamId }),
当你发布数据时,它看起来像这样:
playerId=1&newTeamId=2
但是在AJAX设置中,contentType
被设置为'application/json;charset=utf-8',这意味着数据应该以json格式传递。因为数据没有以JSON格式传递,MVC模型绑定器无法完成它的工作并从请求体获取数据(因为它认为有JSON数据沿着妻子,由于contentType
)。
当你使用JSON时。字符串化数据将在请求体中像这样传递:
{
newTeamId: "2"
playerId: "1"
}