2014-06-05 9 views
13

Ich entwickle eine ASP.net MVC-Anwendung.ASP.net MVC macht Zelleninhalte als Link in Grid.MVC

Früher habe ich den folgenden Code, um eine Tabelle von Produkten anzuzeigen.

foreach (var item in Model) 
{ 
    <div class="row"> 
    <div class="cell"> 
     @Html.ActionLink(item.productName, "ViewProduct", "Showcase", 
     new { productID = item.productID }, null) 
    </div> 
    <div class="cell"> 
     @item.quantity 
    </div> 
    <div class="cell"> 
     @item.price 
    </div> 
    </div> 
} 

Es funktionierte gut, ich konnte das Nx1'st Element als Link zu der Ansicht, die Umleitung machen, um die Details des Produkts zeigt.

Dann wollte ich Gridview implementieren Produkte Tabelle mit MVC.Grid Nuget Paket anzuzeigen.

Grid funktioniert gut, aber ich kann nicht das Nx1'st Element als Link, so dass ich umleiten kann.

Ich versuchte dies, aber es funktioniert nicht.

@Html.Grid(Model).Columns(columns =>{ 
    columns.Add(model => model.productName).Titled("Name").Filterable(true) 
    .RenderValueAs(o => Html.ActionLink(o.productName, "ViewProduct", "Showcase", 
     new { productID = o.productID }, null)); 
    columns.Add(model => model.quantity).Titled("Quantity Available"); 
    columns.Add(model => model.price).Titled("Price"); 
}).WithPaging(3).Sortable(true) 

Die Ausgabe, die ich in der N × 1-Zelle erhalten ist:

<a href="/Showcase/ViewProduct/?productID=15">Galaxy Note 3</a> 

gewünschte Ausgabe: Galaxy Note 3

Bitte helfen Sie mir. Vielen Dank.

+0

versuchen columns.Add (Modell => model.productName) .Titled ("Name"). Filterbare (true) .RenderValueAs (Modell => Html.ActionLink gelöst (model.productName, "ViewProduct", "Showcase", neu {productID = model.productID}, null)); –

+0

Funktioniert immer noch nicht Ich erhalte die gleiche Ausgabe – RandomUser

+0

Kannst du die Ausgabe zeigen, die es zeigt und die gewünschte? –

Antwort

17

Dieses Problem

columns.Add(model => model.productName).Titled("Name") 
.Filterable(true).Sanitized(false).Encoded(false). 
    RenderValueAs(model => Html.ActionLink(model.productName, 
    "ViewProduct", "Showcase", new { productID = model.productID }, null) 
     .ToHtmlString()); 
+1

große Frage, große Antwort! –

+0

Gut finden. Ich brauchte ToHtmlString nicht, aber ich vermisste Sanitized (false) und Encoded (false). Das Hinzufügen dieser beiden Methoden in der Kette hat mein Problem behoben. – barrypicker

+0

was ist mit XSS-Schwachstelle :) –

Verwandte Themen