Вы можете сделать это с помощью функции Ajax. Если вы сделаете это, вы можете полностью удалить блок @using
.
Сначала добавьте кнопку в свой вид и присвойте ей идентификатор. также дайте вашему полю ввода идентификатор.
@Html.LabelFor(model => model.LastName)
@Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control", @id = "lastName" } })
@Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
<button type="button" class="btn btn-success" id="createButton">Add user</button>
Затем добавьте скрипт внизу вашего кода. Далее предполагается, что у вас есть этот код в вашем файле _Layout.cs html: @RenderSection("scripts", required: false)
Если нет, не оборачивайте теги сценария в этот бит кода: @section Scripts {}
@section Scripts {
<script>
// listen for button click event
$('#createButton').click(function (e) {
e.preventDefault();
let lastName = $('#lastName').val();
// Check for empty input -> exit if empty
if ($.trim(lastName) == "") {
return;
}
let data = JSON.stringify({
lastName: lastName
});
// call saveUser ajax function, pass in data
$.when(saveUser(data)).then(function (response) {
alert(response);
}).fail(function (err) {
console.log(err);
});
});
// Pass all data to Controller for saving
function saveUser(data) {
return $.ajax({
url: '/Users/CreateUser',
dataType: 'json',
type: 'POST',
contentType: 'application/json; charset=utf-8',
processData: false,
cache: false,
data: data,
success: function (result) {
console.log(result);
},
error: function () {
alert('Error! Please contact an administrator if the problem persists.')
}
});
}
</script>
}
Наконец, настройте действие своего контроллера примерно так:
[HttpPost]
public JsonResult CreateUser(string lastName)
{
// prepare a return statement
string result = "Error! Please contact an administrator if the problem persists.";
// perform your create logic here, then check if it succeeded or not
if (createSucceeded == true)
{
// change result string to a success message
result = "Success! User created!";
}
// Return the result string
return Json(result, JsonRequestBehavior.AllowGet);
}