У меня есть MVC View с четырьмя разделами (не частичными), у каждого из которых есть своя кнопка сохранения. Эти кнопки сохранения не позволяют сохранить всю форму, просто поле или два данных, в части модели представления. Это Псевдоним, По умолчанию, Формат и Специальные. В представлении есть функция javascript / jQuery для вызова контроллера для каждой кнопки сохранения. Код ajax для Alias работает только тогда, когда он и связанный с ним метод контроллера определены как GET. Остальные три прекрасно работают как POST.
Я пробовал код SaveAlias, настроенный как POST и Get. С точкой останова, установленной в методе контроллера, она никогда не достигается при установке в качестве POST. Если я попробую ту же настройку с остальными тремя, что и POST, точка останова будет достигнута правильно.
// JavaScript в представлении OnSaveAlias () Работает как GET
// Не работает, если настроен как POST.
function OnSaveAlias() {
$('#AliasClearButton').removeClass("d-none");
$('#AliasClearButton').addClass("d-block");
var name = $('#ActiveEntity_Alias_Alias').val();
$.ajax({
type: 'GET',
datatype: "json",
url: '@Url.Action("SaveAliasG", "Entities")',
data: { Name: name },
contentType: 'application/json',
success: function (message) {
if (message) {
$alert('Error');
} else {
window.location.href = "Create";
}
}
});
};
// Соответствующий код контроллера для GET
[HttpGet]
public JsonResult SaveAliasG(String Name)
{
WFViewModel = (WorkflowVM)TempData.Peek("WFViewModel");
WFViewModel.ActiveEntity.Alias.Alias = Name;
WFViewModel.ActiveEntity.AliasesSaved = true;
SelectListItem newItem = new SelectListItem()
{
Text = Name,
Value = "0"
};
WFViewModel.ActiveEntity.EntityAliasList.Add(newItem);
TempData["WFViewModel"] = WFViewModel;
return null;
}
// JavaScript и код контроллера для Default, который работает как POST
function OnSaveDefault() {
$('#DefaultsClearButton').removeClass("d-none");
$('#DefaultsClearButton').addClass("d-block");
var name = $('#ActiveEntity_DefVals_DefaultValue').val();
$.ajax({
type: 'POST',
datatype: "json",
url: '@Url.Action("SaveDefaultP", "Entities")',
data: { Name: name },
contentType: 'application/json',
success: function (message) {
if (message) {
$alert('Error');
} else {
window.location.href = "Create";
}
}
});
};
// Соответствующий код контроллера для POST
[HttpPost]
public JsonResult SaveDefaultP(String Name)
{
WFViewModel = (WorkflowVM)TempData.Peek("WFViewModel");
WFViewModel.ActiveEntity.DefVals.DefaultValue = Name;
WFViewModel.ActiveEntity.DefaultsSaved = true;
TempData["WFViewModel"] = WFViewModel;
return null;
}
НЕТ видимых сообщений об ошибках и ни одного не замечено, если точки останова установлены в коде javascript через отладчик F12.