使用 MVC 3。(下面的代码试图重新创建 stackoverflow 已检查答案的切换效果)我有一个 ajax actionlink,当您单击它时,它会调用对 db 的更新来切换标志/图像。但是它一次有效,如果我再次单击它,它将不会切换。因为没有回发,所以 model.IsIssue 没有更新(它的服务器代码)。不确定解决问题的最佳方法。我是否应该在代码中处理它,在其中检查 db 中的当前标志并将其传递回视图。或者通过 Jquery,不确定如何编码(我的偏好)?
我在视图中的代码(切换):
<div>
@Html.Raw(
Ajax.ActionLink("[replacethis]",
"ToggleEnabled",
new { questionId = question.QuestionID, reviewId = step.ReviewID, flag = question.IsIssue },
new AjaxOptions { UpdateTargetId = "toggleimage" + question.QuestionID })
.ToHtmlString()
.Replace("[replacethis]",
string.Format("<div id='toggleimage{0}'><img src='/Content/images/{1}' border='0' alt='toggle'/></div>",
question.QuestionID, question.IsIssue ? "issue_on.png" : "issue_off.png")
)
)
我的动作控制器:
public ActionResult ToggleEnabled(int questionId, int reviewId, bool flag)
{
using (var db = new NexGenContext())
{
db.Database.ExecuteSqlCommand(
"EXEC SP_AddUpdateQuestionFlagged @QuestionID, @ReviewID",
new SqlParameter("@QuestionID", questionId),
new SqlParameter("@ReviewID", reviewId)
);
return flag ? Content("<img src='/Content/images/issue_off.png' border=0 />") : Content("<img src='/Content/images/issue_on.png' border=0 />");
}
}