в основном, как мне это сделать теперь, когда использование элемента управления asp: listview не может быть и речи?
Я переношу из webforms в mvc, а предыдущая реализация была в <asp:ListView...>
, так как мне теперь это делать с точки зрения лучшего пользовательского опыта для пользователя? т.е.: мне нужно будет все ajax.
спасибо
Теперь вы должны использовать стандартный список. Если вам нужно вернуть список с вашего контроллера, вы вернете SelectList [я думаю, что он].
Чтобы ajax выбрать список, вы можете использовать say jQuery, чтобы добавить клик и изменить события, которые затем вызовут действия в вашем контроллере.
Edit
Хорошо, есть несколько способов. Вы можете использовать сетку jQuery, которая отобразит строки и позволит вам редактировать кнопки удаления. Затем вы возвращаетесь к действию, вносите изменения и возвращаетесь. Конечно, все Ajax.
Другим способом может быть создание пары PartialView. Первые петли через вашу коллекцию, а вторая отображает строку. Последний мог бы сказать кнопки или флажок или что-то еще.
Затем вы снова отправляете назад, через ajax, в результат действия, вносите изменения и возвращаетесь.
Результат действия может возвращать полностью отображаемое частичное представление, поэтому после внесения изменений верните новый частичный вид ваших строк данных и замените старый на новый.
изменить 2 если вы хотите код, оставьте комментарий, и я предоставлю
изменить 3
Там есть куча сеток jQuery, просто google.
Что касается частичных представлений, что-то вроде этого будет работать;
Частичный вид HTML 1 называется BenefitList;
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<Models.Benefit>>" %>
<% foreach(Benefit benefit in Model){ %>
<% Html.RenderPartial("Benefit", benefit); %>
<% } %>
HTML Partial View 2;
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.Benefit>" %>
<fieldset class="Benefit benefit" id="<%= Model.Id %>">
<legend><label class="Title"><%= Html.Encode(Model.Title) %></label> <a class="BenefitDescriptionView" href=".">View</a><a class="BenefitDescriptionEdit" href=".">Edit</a></legend>
<div class="BenefitDescription hidden">
<%= Html.Encode(Model.Description) %>
</div>
</fieldset>
Некоторое jQuery для вас, чтобы сделать сообщение в результате действия;
function jQueryDeleteBenefit() {
$.post("/Home/jQueryDeleteBenefit", { Id: YOURID },
function(NEWHTML) {
$('.EditProductContainer').html(NEWHTML);
});
}
Результат действия;
[AcceptVerbs(HttpVerbs.Post)]
public void jQueryDeleteBenefit(int id
{
//delete item
return PartialView("BenefitList", AllMyBenefits);
}