В моем веб-приложении у меня есть список сетки. Я выбираю строку, а затем нажимаю кнопку редактирования, чтобы отобразить частичное представление обновления (которое я также использую для добавления новых данных) во всплывающем окне. Вид показывает, но у меня нет никаких значений в текстовых полях. Я использую компоненты devextreme, но я думаю, что моя проблема не имеет к этому никакого отношения (возможно, я ошибаюсь).
Это код onClick:
function editrow_onClick() {
var key = $("#grid").dxDataGrid("instance").getKeyByRowIndex(selectedRowIndex);
$.ajax({
url: '/MasterData/Sender/UpdateSender/'+key,
}).done(function (response) {
var popup = $("#sender-popup").dxPopup("instance");
popup.option("contentTemplate", function (content) {
content.append(response);
});
popup.show();
});
}
Если я нажимаю кнопку редактирования, я получаю правильный URL-адрес, например /MasterData/Sender/UpdateSender/3.
Соответствующее действие контроллера выглядит следующим образом :
[Route("{id}")]
public IActionResult UpdateSender(long SenderId)
{
return PartialView("NewSender", SenderRepository.GetSender(SenderId));
}
В верхней части класса контроллера у меня есть соответствующий атрибут: [Route("MasterData/[controller]/[action]")]
Я тестирую идентификатор, действие достигнуто, но SenderId
равно 0. Я бы думаю, что 3. Это должно быть причиной пустого представления, я думаю. Почему SenderId
0 (значение по умолчанию)?
Я также публикую вид обновления, возможно, это является источником проблемы (не беспокойтесь о действии AddSender
, я планирую изменить его условно , если я получу данные об обновлении, работающие):
@model Sender
<form asp-action="AddSender" asp-controller="Sender" method="post">
@using(Html.DevExtreme().ValidationGroup()) {
@(Html.DevExtreme().Form<Sender>()
.ID("form")
.ColCount(1)
.Items(items => {
items.AddSimpleFor(m => Model.Name);
items.AddSimpleFor(m => Model.Address);
items.AddSimpleFor(m => Model.ContactPerson);
items.AddSimpleFor(m => Model.ContactEmail);
items.AddGroup().Items(groupItem => groupItem.AddSimple().Template(
@<text>
<div style="text-align: right">
@(Html.DevExtreme().Button().ID("save").Text("Mentés").Width(100).Type(ButtonType.Success).UseSubmitBehavior(true))
@(Html.DevExtreme().Button().ID("cancel").Text("Mégsem").Width(100).Type(ButtonType.Normal).OnClick("close_onClick"))
</div>
</text>));
})
.LabelLocation(FormLabelLocation.Top)
.FormData(Model)
)
}
</form>
<script>
function close_onClick() {
$("#sender-popup").dxPopup("hide");
}
</script>