Здравствуйте!
При регистрации мне нужно передать соответствующее значение, а точнее, результат, после обработки данных при регистрации и вернуть соответствующую строку для вывода на странице. Я делаю это используя ViewData, но оно возвращает мне пустую строку. Когда я пытаюсь применить метод ToString(), то мне говорится, что мой объект ViewData имеет значение null и я не понимаю в чём проблема.
Код контроллера:
[IgnoreAntiforgeryToken]
[HttpPost]
public async Task<IActionResult> Registration([FromBody]UserEntryViewModel viewModel)
{
if (!ModelState.IsValid)
{
ViewData["ResponseMessage"] = "Invalid data";
return BadRequest();
}
UserEntity userEntity = new UserEntity()
{
Email = viewModel.Email,
Login = viewModel.Login,
Name = viewModel.Name,
Password = viewModel.Password,
Type = UserType.Client,
};
var user = _userService.GetByEmail(userEntity.Email);
if (user.Count > 0)
{
ViewData["ResponseMessage"] = "Was created";
return BadRequest();
}
_userService.Create(userEntity);
ViewData["ResponseMessage"] = "Created successfuly";
return Json(new { success = true });
}
Код представления:
@using SteamEmart.Web.Models;
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@model UserEntryViewModel
<h1>@ViewData["ResponseMessage"]</h1>
<div style="margin-left: 40%; margin-right: 40%">
@Html.ValidationSummary(false, null, new { @class = "text-danger"})
<form id="userData">
<h3>Name</h3>
<input id="name" type="text" placeholder="Vasia"/> <br /> <br />
<h3>Login</h3>
<input id="login" type="text" placeholder="Vasiliy"/> <br /> <br />
<h3>Email</h3>
<input id="email" type="email" placeholder="vvasia@poshta.com"/>
<h3>Password</h3>
<input id="password" type="password" placeholder="Secret"/> <br /> <br />
<input type="button" id="submitBtn" style="width: 100px"/>
</form>
</div>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script type="text/javascript">
$("#submitBtn").bind('click', () => {
var formData = {
name: $('#name').val(),
login: $('#login').val(),
email: $('#email').val(),
Password: $('#password').val(),
}
$.ajax({
url: '@Url.Action("Registration", "User")',
type: 'POST',
data: JSON.stringify(formData),
contentType: "application/json; charset=utf-8",
dataType: 'JSON',
success: (message) => {
$('#name').val("");
$('#login').val("");
$('#email').val("");
$('#password').val("");
alert(@ViewData["ResponseMessage"]);
},
error: () => {
alert(@ViewData["ResponseMessage"]);
}
});
});
</script>