在 GridModel (MVCContrib) 中编辑链接

Posted

技术标签:

【中文标题】在 GridModel (MVCContrib) 中编辑链接【英文标题】:Edit links in GridModel (MVCContrib) 【发布时间】:2011-01-03 11:56:15 【问题描述】:

MvcContrib GridModel : Is it possible to do ActionSyntax in a GridModel 我读过这篇文章,它非常有用,但我不能应用它。我不知道是否在最新的 MVCContrib 中,他们删除了“.Action()”,因为我无法访问它。

有没有办法可以将编辑链接的 ActionLink 放入网格模型中?

谢谢

【问题讨论】:

【参考方案1】:

看来旧方法已经被删除了。

下面是现在的方法:

VB.NET

首先,您通过构造函数将 html 对象传递给 gridmodel 类,然后您可以在 gridmodel 类中使用它。

Imports MvcContrib.UI.Grid

Public Class PersonGridModel
    Inherits GridModel(Of Person)

    Public Sub New(ByVal html as HtmlHelper)
        Column.For(Function(u) html.ActionLink("Edit", "Edit", "Person", New With .id = u.PersonId, Nothing)).DoNotEncode()
    End Sub
End Class

然后,在您看来,您将它传递给构造函数:

<%=Html.Grid(Model).WithModel(New MemberRetentionTrackingSystem.InboundCallGridViewModel(Html))%>

C#

网格模型:

public class PersonGridModel : GridModel 
    public PersonGridModel(HtmlHelper html) 
        Column.For(u => html.ActionLink(“Edit”, “Edit”, “Person”)).DoNotEncode();
    

查看:

< %= Html.Grid(ViewData.Model).WithModel(new PersonGridModel(Html)) %>

参考:http://www.jeremyskinner.co.uk/2009/02/22/rewriting-the-mvccontrib-grid-part-2-new-syntax/(见comment from Amitabh)

【讨论】:

【参考方案2】:

作为旁注,最近的更改,.DoNotEncode() 现在已弃用,所以使用 .Encode(false)

【讨论】:

【参考方案3】:

首先,非常感谢@Andrew for his answer:Amitabh's question 和Skinner's answer 真正解决了我的疑问。无论如何,对于 ASP.NET MVC 4,我很难弄清楚为什么在网格模型中这不起作用:

Column.For(hospital => html.ActionLink("View Details", "Show", "Foo")).Encode(false);

为什么?因为我没有添加必要的 using 指令:

using System.Web.Mvc.Html;

我只使用了 Visual Studio Intellisense 建议的方法:

using System.Web.Mvc;

希望对遇到同样问题的人有所帮助!

【讨论】:

以上是关于在 GridModel (MVCContrib) 中编辑链接的主要内容,如果未能解决你的问题,请参考以下文章

带有 Razor 的 MvcContrib FluentHtml?

复杂对象上的 MvcContrib 网格排序

MVCContrib 网格 - 我可以指定 tbody 属性吗?

一页上有多个MVCContrib网格

如何将 css 类应用于 mvccontrib 网格

带区域的 MVCContrib 测试路线