【发布时间】:2010-01-21 03:22:20
【问题描述】:
基本上,既然无法使用 asp:listview 控件,我应该怎么做?
我正在从 webforms 迁移到 mvc,以前的实现是在 <asp:ListView...> 中,那么就用户的最佳用户体验而言,我现在应该如何做呢?即:我需要 ajax 一切。
谢谢
【问题讨论】:
标签: c# asp.net javascript asp.net-mvc vb.net
基本上,既然无法使用 asp:listview 控件,我应该怎么做?
我正在从 webforms 迁移到 mvc,以前的实现是在 <asp:ListView...> 中,那么就用户的最佳用户体验而言,我现在应该如何做呢?即:我需要 ajax 一切。
谢谢
【问题讨论】:
标签: c# asp.net javascript asp.net-mvc vb.net
您现在应该使用标准列表框。如果您需要从控制器返回列表,则返回 SelectList [我认为就是这样]。
要 ajax 选择列表,您可以使用 jQuery 添加点击和更改事件,然后在您的控制器中调用 actionresults。
编辑
嗯,有几种方法。您可以使用 jQuery 网格来显示行并允许您拥有编辑删除按钮。然后,您发回操作,进行更改并返回。当然是所有的 Ajax。
另一种方法可能是编写几个 PartialViews。第一个循环遍历您的集合,第二个显示该行。最后一个会说按钮或复选框或其他任何内容。
然后您再次通过 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 局部视图 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);
}
【讨论】: