MVC 3を使用します(以下のコードは、stackoverflowのチェックされた回答のトグル効果を再現する試みでした)クリックすると、フラグ/イメージを切り替えるためにdbへの更新を呼び出すajaxアクションリンクがあります。ただし、一度は機能しますが、もう一度クリックしても切り替わりません。ポストバックがないため、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 />");
}
}