Asp.net mvc 让切换图像在mvc页面上正常工作?

Asp.net mvc 让切换图像在mvc页面上正常工作?,asp.net-mvc,asp.net-ajax,Asp.net Mvc,Asp.net Ajax,使用mvc3。 (下面的代码试图重新创建stackoverflow的选中答案的切换效果) 我有一个ajax actionlink,当您单击它时,它会调用对db的更新来切换标志/图像。但它只工作一次,如果我再次单击它,它将不会切换。由于没有回发,因此不会更新model.isisue(其服务器代码)。不确定解决问题的最佳方法。我应该在代码中处理它,在代码中检查db中的当前标志并将其传递回视图。或者通过Jquery,不知道如何编码(我的首选) 视图中的我的代码(切换): @Html.Raw( Act

使用mvc3。 (下面的代码试图重新创建stackoverflow的选中答案的切换效果) 我有一个ajax actionlink,当您单击它时,它会调用对db的更新来切换标志/图像。但它只工作一次,如果我再次单击它,它将不会切换。由于没有回发,因此不会更新model.isisue(其服务器代码)。不确定解决问题的最佳方法。我应该在代码中处理它,在代码中检查db中的当前标志并将其传递回视图。或者通过Jquery,不知道如何编码(我的首选)

视图中的我的代码(切换):


@Html.Raw(
ActionLink(“[replacethis]”,
“已启用切换”,
新建{questionId=question.questionId,reviewId=step.reviewId,flag=question.IsIssue},
新的AjaxOptions{UpdateTargetId=“toggleimage”+question.QuestionID})
.ToHtmlString()
.Replace(“[replacethis]”,
string.Format(“”,
question.QuestionID,question.IsIssue?“issue\u on.png”:“issue\u 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  />");

            }
        }
public ActionResult ToggleEnabled(int-questionId、int-reviewId、bool标志)
{
使用(var db=new NexGenContext())
{
db.Database.ExecuteSqlCommand(
“EXEC SP_AddUpdateQuestionFlagged@QuestionID,@ReviewID”,
新的SqlParameter(“@QuestionID”,QuestionID),
新的SqlParameter(“@ReviewID”,ReviewID)
);
返回标志?内容(“”):内容(“”);
}
}

我只需要更改css类来切换图像

因此,与其将图像保存在
img
。。。我会使用
div
并将图像作为背景

因此,与其用其中的DIV和IMG替换html(删除回调以处理单击),不如更改DIV的类

在你看来:

<div id="myimage" class="NormalState"></div>
在CSS中:

.NormalState { background-color: #ABCDEF;}
.ClickState { background-color: #FF0000;}
在控制器中:

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  />");

            }
        }

您需要返回JSON,并将
isClicked
设置为true或false。您还可以从控制器返回要应用的css类,但这样控制器就知道视图,而这不是MVC模式的想法。因此,告诉视图发生了什么更合适。

不确定我是否完全遵循。可以给我一个模型或例子吗?例子代码添加。。。未在VS中测试。。。刚刚调试了一下编辑器:)
.NormalState { background-color: #ABCDEF;}
.ClickState { background-color: #FF0000;}