【问题标题】:Best way to do ListView in ASP.NET MVC?在 ASP.NET MVC 中执行 ListView 的最佳方法?
【发布时间】:2010-01-21 03:22:20
【问题描述】:

基本上,既然无法使用 asp:listview 控件,我应该怎么做?

我正在从 webforms 迁移到 mvc,以前的实现是在 <asp:ListView...> 中,那么就用户的最佳用户体验而言,我现在应该如何做呢?即:我需要 ajax 一切。

谢谢

【问题讨论】:

    标签: c# asp.net javascript asp.net-mvc vb.net


    【解决方案1】:

    您现在应该使用标准列表框。如果您需要从控制器返回列表,则返回 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);
        }
    

    【讨论】:

    • 列表框不是扩展组合框内的可选列表吗?这不是我所追求的……只想显示具有添加/编辑/删除等功能的数据库记录(cmets)。
    • 感谢伙计,这正是我想要的,嵌套局部视图听起来是个好主意!但是,关于 jQuery 方法,我需要查看 jQuery 的哪个部分才能阅读和理解这一点,它只是称为“网格”还是? jQuery 方法会自动执行什么操作?自己做嵌套的局部视图值得还是更好?
    • 在这些情况下我有点喜欢 PartialView 方法,但我确信这只是个人喜好。
    • 非常感谢详细的帖子,这对我很有帮助。根据我的记忆,$.post jquery 函数是 $.ajax 的包装器,如果我是正确的,则在其参数中标记“POST”。在更新(添加/更新/删除)时,最好只更新整个 cmets 面板,还是有一个巧妙的技巧可以在不刷新整个 cmets 面板的情况下进行内联更新?
    • 选择你自己的个人风格。但是,如果您知道已删除项目的 id,则只需使用 jQuery 将其隐藏。 $('#itemid').hide() 应该可以很好地解决问题。
    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多