我试图在保存按钮单击事件时将数据保存到数据库,但在存储库代码中收到错误,如下所示。请帮我解决这个问题。
这是我的list.cshtml代码:
var saveTrainingProgram = function () {
console.log('in save');
$.ajax({
url: '/Affiliate/TrainingProgram/Save',
type: 'POST',
data: {
trainingProgramName: ff.trainingProgramName.val(),
colorCode: ff.colorCode.val()
}
}).done(function (response) {
if (response.status === 'success') {
var html = buildEntryHtml(entry, (trainingProgramId == 0));
} else {
}
}).fail(function (jqXHR, textStatus) {
$.isLoading('hide');
});
clearForm();
};
var clearForm = function () {
el.addForm.find('.form-control input').val();
el.addForm.find('select training-program-name').prop('selected', true).trigger('change');
// clear if Validation errors exist.
trainingProgramValidator.resetForm();
};
控制器:
[HttpPost]
[Authorize(Roles = "Affiliate")]
public ActionResult Save(string trainingProgramName, stringcolorCode)
{
CbJsonResponse response = new CbJsonResponse();
int errorCount = 0;
List<string> errorMessages = new List<string>(5);
if (string.IsNullOrEmpty(trainingProgramName))
{
errorCount++;
errorMessages.Add("Error: The Training Program Name is required.");
}
if (string.IsNullOrEmpty(colorCode))
{
colorCode = CbConstants.TrainingProgramDefaultColorCode;
}
if (errorCount == 0)
{
Entities.TrainingProgram trainingProgram = new Entities.TrainingProgram();
trainingProgram.Name = trainingProgramName;
trainingProgram.ColorCode = colorCode;
if (TrainingProgramRepository.Instance.SaveTrainingProgram(trainingProgram))
{
response.Status = "success";
TrainingProgramListEntry listEntry = new TrainingProgramListEntry()
{
ID = trainingProgram.ID,
Name = trainingProgram.Name,
ColorCode = trainingProgram.ColorCode
};
// Include the list entry in the response.
response.Data.Add(listEntry);
}
}
else
{
response.Status = "failure";
response.Meta.Add("errorCount", Convert.ToString(errorCount));
response.Data.Add(errorMessages);
}
return Json(response, "application/json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);
}
存储库:
public bool SaveTrainingProgram(TrainingProgram trainingProgram)
{
bool retVal = false;
using (var ctx = new CrossfitPortalEntities())
{
try
{
ctx.TrainingPrograms.Add(trainingProgram);
retVal = (ctx.SaveChanges() > 0);
}
catch (Exception ex)
{
logger.Debug("Unable to save training program.", ex);
}
}
return retVal; // retVal should be true but it is false
}