使用mvc3有条件地在telerik网格中显示链接

时间:2011-04-14 21:54:39

标签: telerik

我正在尝试向网格添加操作链接。但仅当条件存在时(用户被锁定)。我无法在mvc3(razor)中使用它。没有显示任何内容。

我试过了:

    @Html.Telerik().Grid(Model.Users).Name("UserGrid").DataKeys(dataKeys => dataKeys.Add(o => o.UserName)).Columns(columns =>
   {
       columns.Template(s => Html.ActionLink(s.UserName, "Details", new { id = s.ProviderUserKey })).Title("Username (<i>click to edit</i>)");
        columns.Template(s => { if (s.IsLockedOut) Html.ActionLink("Unlock", "UnlockUser", new { username = s.UserName }, new { @class = "unlockimage" }); });
    }).Pageable().Sortable().Filterable()

甚至当我删除if(cond)时......我无法显示动作链接。但是,如果我不使用lambda?它确实有效,但显然一直在显示。

        columns.Template(s => Html.ActionLink("Unlock", "UnlockUser", new { username = s.UserName }, new { @class = "unlockimage" }) );

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

查看this在线演示如何显示如何在Razor中使用模板列。这是一段摘录:

columns.Template(
                @<text>
                    <img 
                        alt="@item.CustomerID " 
                        src="@Url.Content("~/Content/Grid/Customers/" + item.CustomerID + ".jpg") " 
                      />
                </text>
            )

答案 1 :(得分:0)

Rich的解决方案帮助我制定了满足需求的解决方案。我有一个列可以显示简单的文本,电子邮件地址或网址。我想将电子邮件地址和网址设为可选择的热门链接。以下是我的解决方案。

//Show the Value column. If the value is an email address of url display as a clickable hot link
    columns.Template(@<text> @if (item.ContactType.Value == "Email")
                               { 
                                   <a href="@Url.Content("mailto:" + item.DisplayValue)" >@item.DisplayValue</a>
                               } else if (item.ContactType.Value == "Website")
                               { 
                                   <a href="@Url.Content("http://" + item.DisplayValue)" >@item.DisplayValue</a>
                               } else
                               {
                                   @item.DisplayValue.ToString()
                               }
                      </text>)
            .Title("Value")
            .Width(250);