Vì vậy, tôi muốn tạo một nút chuyển đổi cho một bảng, nơi tôi có thể thực hiện cuộc gọi không đồng bộ để cập nhật bản ghi cơ sở dữ liệu (bật/tắt).Tạo một hình ảnh chuyển đổi AJAX trong ASP.NET MVC
img http://i41.tinypic.com/os4vua.jpg
Sau một số thử và sai, tôi đã quản lý để có được nó làm việc - nhưng nó cảm thấy như có phải là một cách thanh lịch hơn.
- Tôi không thích lặp lại thẻ hình ảnh trong bộ điều khiển của mình, rõ ràng ... Làm cách nào để tránh điều đó một cách thanh lịch?
- Có cách nào tốt hơn để tiếp cận điều này mà tôi đã làm không?
Đây là mã của tôi trong bộ điều khiển:
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");
}
Và xem ...:
<% 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>
...
<% } %>
Bí quyết/hack với Ajax.ActionLink sử dụng một hình ảnh đã được tìm thấy here .
Tôi thực sự thích cách bạn đã làm. Tôi không thấy bất kỳ cách rõ ràng nào để làm cho nó đơn giản hơn. Như bạn đã chỉ ra, logic hình ảnh của bạn được nhân bản trong bộ điều khiển và khung nhìn, nhưng bạn cần logic trong khung nhìn để tải trang và bạn cần logic trong bộ điều khiển cho cuộc gọi Ajax. –
Cố gắng để viết lại điều này trong dao cạo Mvc 3, tôi nhận được một lỗi với "thay thế". Nó nói System.Web.MVC.MVChtmlString không chứa một defintion ... – Chaka
Bất kỳ trợ giúp về cách viết lại trong dao cạo? – Chaka