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