2014-06-05 11 views
13

Zajmuję się tworzeniem aplikacji ASP.net MVC.ASP.net MVC tworzenie zawartości komórki jako łącze w Grid.MVC

Wcześniej użyłem następującego kodu, aby wyświetlić tabelę produktów.

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> 
} 

Udało się bez problemu, udało mi się uczynić element Nx1 jako łącze do przekierowania do widoku wyświetlającego szczegóły produktu.

Następnie chciałem zaimplementować GridView, aby wyświetlić tabelę produktów przy użyciu pakietu NVVG.Grid Nuget.

Siatka działa dobrze, ale nie mogę utworzyć elementu Nx1 jako łącza, aby można było przekierować.

Próbowałem tego, ale to nie działa.

@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) 

Wyjście że mam w komórce nx1 jest:

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

Pożądany wyjściowa: Galaxy Note 3

Proszę mi pomóc. Dzięki.

+0

spróbować columns.Add (model => model.productName) .Titled ("Name"). Filtrowalny (true) .RenderValueAs (model => Html.ActionLink (model.productName, "ViewProduct", "Showcase", new {productID = model.productID}, null)); –

+0

Nadal nie działa Otrzymuję to samo wyjście – RandomUser

+0

możesz pokazać wynik, który pokazuje i pożądany? –

Odpowiedz

17

To rozwiązało 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

świetne pytanie, wspaniała odpowiedź! –

+0

Dobre znalezisko. Nie potrzebowałem ToHtmlString, ale brakowało mi Sanitized (false) i Encoded (false). Dodanie tych dwóch metod do łańcucha rozwiązało mój problem. – barrypicker

+0

co z podatnością na XSS :) –

Powiązane problemy