У меня есть действие контроллера, которое я хочу обновить с помощью вызова jquery. Действие выполняется, но в параметрах нет данных.
Я использую сетку кедуи с пользовательской командой в столбце, в котором я хочу запустить некоторый серверный код.
kendoui grid in view
...
columns.Command(command =>
{
command.Custom("ToggleRole").Click("toggleRole");
});
...
Модель имеет тип List‹_AdministrationUsers>.
public class _AdministrationUsers
{
[Key]
[ScaffoldColumn(false)]
public Guid UserID { get; set; }
public string UserName { get; set; }
public string Role { get; set; }
}
Вот мой сценарий toggleRole:
<script type="text/javascript">
function toggleRole(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
alert(JSON.stringify(dataItem));
$.ajax({
type: "POST",
url: '@Url.Action("ToggleRole", "Administration")',
data: JSON.stringify(dataItem),
success: function () {
RefreshGrid();
},
error: function () {
RefreshGrid()
}
});
}
</script>
Вот мое действие контроллера:
[HttpPost]
public ActionResult ToggleRole(string UserID, string UserName, string Role)
{
...
}
Действие контроллера срабатывает, но ни в одном из параметров нет данных.
Я поместил предупреждение в javascript, чтобы убедиться, что в переменной «dataItem» действительно есть данные. Вот как выглядит текст предупреждения:
{"UserID":"f9f1d175...(etc.)","UserName":"User1","Role","Admin"}