【发布时间】:2021-03-05 12:50:01
【问题描述】:
我正在使用 Entity Framework 6.0 在 ASP.NET MVC 5 中编写一个应用程序,该应用程序基于选定的日期,我将此日期发送到控制器,该控制器将其传递给存储过程,此过程基于该日期,计算人数并将值返回给控制器,并且“假定”应该将其传递回 ajax,以便使用 JavaScript 可以处理它并在视图中显示结果;代码如下:
$("#FechConsult").change('click', function () {
$.ajax({
type: 'POST',
dataType: 'Json',
url: "/Home/CuentaUser",
data: { FechaInsc: $("#FechConsult").val() },
success: function (data) {
var CantidadUsr = result[0];
$("#TotCupos").val(CantidadUsr.CantiPer);
cupos = ParseInt(CantidadUsr.CantiPer - TotalUsr);
if ((cupos >= 15) || (cupos <= 20)) {
$("#TotCupos").css({ "background": "#b5ff33" });
}
else {
if ((cupos >= 10) || (cupos <= 14)) {
$("#TotCupos").css({ "background": "#e9f00e" });
}
else {
if ((cupos >= 1) || (cupos <= 9)) {
$("#TotCupos").css({ "background": "#e85e0a" });
$("#mensaje").show();
$("#mensaje").val("Ha Llegado Casi Al Limite de Cupos Diarios");
}
else {
if ((cupos = TotalUsr)) {
$("#mensaje").show();
$("#mensaje").val("Ha Llegado A Límite Máximo de Personas, Seleccione Otro Dia");
$("#PassWord").focus();
}
}
}
}
}
})
});
那么控制器就会发生这种情况:
[HttpPost]
public ActionResult CuentaUser(Inscripcion inscripcion)
{
using (CtaUsr = new Drillco_InscripcionEntities())
{
var CantiPer = CtaUsr.SP_Sel_Cta_PersXFecha(Convert.ToString(inscripcion.FechaInsc));
return Json(CantiPer, JsonRequestBehavior.AllowGet);
}
}
存储过程如下:
ALTER procedure [dbo].[SP_Sel_Cta_PersXFecha]
@FechInsc varchar(10)
AS
BEGIN
SELECT COUNT(idOper) AS CantP
FROM Inscripcion
WHERE FechaInsc = CONVERT(datetime, @FechInsc, 103)
END
问题:是调用存储过程后,ajax没有收到控制器返回的值,我在浏览器中按F12,提示500错误,不识别名字控制器,我已经转了一千圈了,我还没有找到任何解决方案,有人能告诉我我做错了吗?
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: c# sql-server ajax entity-framework asp.net-mvc-5