编辑GridModel中的链接(MVCContrib)

时间:2010-01-10 15:55:56

标签: asp.net-mvc model grid mvccontrib html.actionlink

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

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

谢谢

3 个答案:

答案 0 :(得分:4)

似乎旧方法已被删除。

以下是如何做到这一点:

<强> 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#

GridModel:

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

答案 1 :(得分:1)

作为附注,最近的更改,。DoNotEncode()现在已弃用,因此请使用.Encode(false)

答案 2 :(得分:0)

首先,非常感谢@Andrew for his answerAmitabh's questionSkinner'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;

希望它可以帮助任何面临同样问题的人!