Редактировать ссылки в GridModel (MVCContrib) - PullRequest
5 голосов
/ 10 января 2010

MvcContrib GridModel: возможно ли сделать ActionSyntax в GridModel Я прочитал эту статью, и она довольно полезна, но я не могу применить это. Я не знаю, удалили ли они «.Action ()» в новейшем MVCContrib, потому что я не могу получить к нему доступ.

Можно ли как-нибудь поместить ActionLink ссылки редактирования в модель сетки?

Спасибо

Ответы [ 3 ]

4 голосов
/ 01 апреля 2010

Кажется, что старый метод был удален.

Вот как это сделать сейчас:

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/ (см. комментарий от Амитабха )

1 голос
/ 15 октября 2010

В качестве примечания, более свежее изменение .DoNotEncode () устарело, поэтому используйте .Encode (false)

0 голосов
/ 19 июня 2012

Во-первых, большое спасибо @ Эндрю за его ответ : Вопрос Амитабха и Ответ Скиннера действительно разрешил мои сомнения. В любом случае, с ASP.NET MVC 4 мне было трудно понять, почему это не работает в Grid-модели:

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

Почему? Потому что я не добавлял необходимую директиву using:

using System.Web.Mvc.Html;

У меня было только это с использованием Visual Studio Intellisense:

using System.Web.Mvc;

Надеюсь, это поможет любому, кто столкнется с той же проблемой!

...