ดังนั้นฉันจึงต้องการสร้างปุ่มสลับสำหรับตาราง ซึ่งฉันสามารถทำการเรียกแบบอะซิงก์เพื่ออัปเดตบันทึกฐานข้อมูล (เปิด/ปิดใช้งาน)
หลังจากการลองผิดลองถูกมาบ้าง ฉันก็สามารถทำให้มันใช้งานได้ แต่รู้สึกว่ามันต้องมีวิธีที่หรูหรากว่านี้
- ฉันไม่ชอบการใช้แท็กรูปภาพซ้ำในคอนโทรลเลอร์ของฉัน แน่นอนว่า... ฉันจะหลีกเลี่ยงมันด้วยวิธีที่สวยงามได้อย่างไร
- มีวิธีที่ดีกว่าโดยรวมในการเข้าถึงสิ่งนี้จากสิ่งที่ฉันทำหรือไม่?
นี่คือรหัสของฉันในคอนโทรลเลอร์:
public ActionResult ToggleEnabled(int id)
{
if (Request.IsAjaxRequest())
{
var p = this.PageRepository.GetPage(id);
p.Enabled = p.Enabled != true;
this.PageRepository.Edit(p);
return p.Enabled ? Content("<img src='/Content/icons/tick.png' border=0 />") : Content("<img src='/Content/icons/tick_grey.png' border=0 />");
}
return Content("Error");
}
และวิว...:
<% var img = Model.Enabled ? "tick.png" : "tick_grey.png"; %>
<% foreach (var item in Model)
{ %>
...
<td align="center">
<%=Ajax.ActionLink("[replacethis]",
"ToggleEnabled",
new { id = Model.ID },
new AjaxOptions { UpdateTargetId = "toggleimage" + Model.ID }).Replace("[replacethis]",
string.Format("<div id='toggleimage{0}'><img src='/Content/icons/{1}' border='0' alt='toggle'/></div>",
Model.ID, Model.Enabled ? "tick.png" : "tick_grey.png"))%>
</td>
...
<% } %>
พบเคล็ดลับ/แฮ็กด้วย Ajax.Actionlink โดยใช้รูปภาพได้ที่นี่.