Я относительно новичок в ASP.NET MVC.Можете ли вы дать некоторые рекомендации о том, как запретить странице Refresh отправлять форму и, таким образом, вводить другую запись в БД?
Я пытался предотвратить это, включив скрытый ввод в форму и ТОЛЬКО отправить на кнопкунажатие и затем проверка в контроллере, было ли передано значение от нажатой кнопки (значение hiddenFormSubmit), но оно не работает.
При обновлении все еще новая запись вводится в БД.Я хотел бы знать, как правильно решить эту проблему.
В контроллере:
public ActionResult Index(string id = "0") // id taken from url
{
ViewModelVM viewModelVM = new ViewModelVM();
DbManager dbManager = new DbManager();
// if request is "option"
if (Request["optionSelector"].Equals("option") &&
Request["hiddenFormSubmit"].Equals("ButtonPressed"))
{
DbRecord recordToEnterInDb = new DbRecord();
// create the object to insert into db
recordToEnterInDb.field1 = value1;
recordToEnterInDb.field2 = value2;
(...)
bool recordCreatedSuccessfully =
dbManager.InsertRecordInDB(recordToEnterInDb);
if (recordCreatedSuccessfully)
{
viewModelVM.ViewModelList.Add(recordToEnterInDb);
}
}
return View(viewModelVM);
}
В представлении:
<form method="post" id="MyForm">
<input type="hidden" value="" name="hiddenFormSubmit"
id="hiddenFormSubmit "/>
<select id="optionSelector" name="optionSelector">
(...)
</select>
<div class="col-xs-12 text-center">
<button class="btn btn-primary" type="button"
id="btnSubmitForm">Submit Form</button>
</div>
</form>
<script>
$(function () {
$('#btnSubmitForm').on("click", function () {
var isValid = false;
var hiddenField =
$('input[name="hiddenFormSubmit"]:hidden');
hiddenField.val("NotPressed");
var optionSelector = $('#optionSelector').val();
if (optionSelector != null) {
hiddenField.val("ButtonPressed");
isValid = true;
}
if (isValid) {
$('#MyForm').submit();
}
});
});
</script>