这是一个奇怪的问题。我在视图上从 jQuery 调用控制器中的 ActionResult。
这是 jQuery
$(document).ready(function () {
$('.addNoteLink').button();
$('.addNoteLink').click(function () {
var cid = $('#CaseID').val();
var notetext = $('#NoteText').val();
var url = "/Cases/AddNoteText";
$.ajax({
type: "POST",
url: url,
data: { id: cid, note: $('#NoteText').val() }
});
});
});
这是控制器方法:
public ActionResult AddNoteText(int id, string note)
{
try
{
if (ModelState.IsValid)
{
CaseNotes notes = new CaseNotes
{
CasesID = id,
NoteDate = DateTime.Now,
NoteText = note
};
db.CaseNotes.Add(notes);
db.SaveChanges();
}
}
catch
{
}
return RedirectToAction("Edit", id);
}
这是与jQuery相关的html:
<div class="editor-label">
@Html.Label("Enter notes here and click Add Note Text")
</div>
<div class="textarea-field">
<input id = "NoteText" type="text" />
</div>
@Html.ActionLink("Add Note Text", "AddNoteText", new { id = Model.CasesID }, new { @class = "addNoteLink" })
当 jQuery 调用此方法时,如果我跟随断点,则参数正确传递,ModelState 有效,它进入注释实体并分配值等。当断点命中 db.CasesNotes.Add(notes) 断点返回到函数的顶部并再次下降,直到它击中注释实体然后跳转到 db.SaveChanges() 然后再次返回顶部,通过该方法并出错,因为此时参数已被清除。原始记录被插入。
有什么想法吗?