Я хочу ввести значения в мою таблицу «Категории», чтобы не перезагружать страницу и держать пользователя всегда на виду, для этого я хочу использовать Ajax + Jquery, упражнение кажется простым, но оно сводит меня с ума, вы вводите названия категорий во входе и хотите показать <div>
для вашего подтверждения (успех) или неудачи (опасность) в зависимости от случая, что-то вроде этого ...

Проблема в том, что мой код Javascript ничего не делает, он даже не входит в метод Create
Я прилагаю свое представление create.html:
<head>
<script src="~/Scripts/jquery-1.12.4.js"></script>
<script src="~/Scripts/jquery-1.12.4.min.js"></script>
</head>
<body>
<div id="div-alerta">
<label id="mensaje-alerta"></label>
</div>
<hr />
@Html.LabelFor(model => model.v_Nombre, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input class="form-control" type="text" id="txtNombre" />
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="button" value="Crear" id="btnCrearCategoria" class="btn btn-outline-success btn-lg" />
</div>
</div>
</body>
</html>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script>
$(function () {
$("#btnCrearCategoria").click(function () {
var url = "@Url.Action("Create", "Categorias")";
var nombre = $("#txtNombre").val();
var data = { v_Nombre: nombre };
$.post(url, data).done(function (data) {
if (data.Ok) {
$("#div-alerta").removeClass("alert-danger").addClass("alert-success").slideDown(100);
}
else {
$("div-alerta").removeClass("alert-success").addClass("alert-danger").slideDown(100);
}
$("#mensaje-alerta").html(data.Mensaje)
})
})
})
</script>
}
Это мой объект category.cs:
public class Categoria
{
[Key]
public int Kn_CodigoCategoria { get; set; }
[Required(ErrorMessage = "El campo {0} es obligatorio")]
[MaxLength(40, ErrorMessage = "El campo {0} debe tener un máximo de {0} caracteres")]
[Column(TypeName = "VARCHAR")]
[Index("Categoria_v_Nombre_Index", IsUnique = true)]
[Display(Name = "Nombre Categoria")]
public string v_Nombre { get; set; }
}
, и это мой метод создания, который возвращает Json:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Create(Categoria categoria)
{
var resultado = new BaseRespuesta();
try
{
db.Categorias.Add(categoria);
db.SaveChanges();
resultado.Mensaje = "Categoria creada correctamente";
resultado.Ok = true;
}
catch (Exception ex)
{
resultado.Mensaje = ex.Message;
resultado.Ok = false;
}
return Json(resultado);
}
Я занимаю класс BaseResponse для просмотра сообщенийоб успешном или неудачном выполнении моей операции:
public class BaseRespuesta
{
public bool Ok { get; set; }
public string Mensaje { get; set; }
}
Мое ожидаемое поведение: при вводе значения в текстовое поле показывайте div (успех или неудача) с соответствующим сообщением
Myполученное поведение: ввод значения в input ничего не делает
что я делаю не так?Я что-то упустил в своем коде?это первый раз, когда я работаю с вызовами Ajax ... я должен загрузить частичное представление?любая помощь для меня?