如何在视图中将模型中的项目显示为链接

时间:2018-10-26 10:24:49

标签: html asp.net asp.net-mvc entity-framework

我在视图中显示了几个字段,

@foreach (var item in Model)
{
    string selectedRow = "success";
    if (item.ClientId == ViewBag.ClientId)
    {
        selectedRow = "success";
    }
    <tr class="@selectedRow">
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Address)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Number)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Purchases)
        </td>
      </tr>

我想将每个Purchases字段显示为一个链接,以重定向到包含相关信息的另一个页面。与

非常相似
@Html.ActionLink("Purchases", "Purchase", new {id = item.ClientId})

但是我不知道如何正确地引用每一项。在Action Link中购买。

5 个答案:

答案 0 :(得分:0)

不确定是什么问题-这是您要寻找的吗?

注意:我假设 Purchases list

@for (int i = 0; i < item.Purchases.Count(); i++)
{
   @Html.ActionLink("link text", "action", "controller", new { id = item.ClientId }, null)
}

答案 1 :(得分:0)

考虑将Purchases作为控制器,并将Purchase作为其动作,您可以使用:

@if (item.Purchases != null)
{
    @Html.ActionLink(Convert.ToString(item.Purchases),"Purchase","Purchases", new {id = item.ClientId})
}

以上将解决问题。

OR

@if (!String.IsNullOrEmpty(Convert.ToString(item.Purchases)))
{ 
    <a href='@Url.Content("~/Purchases/Purchase?id=" + item.ClientId)'>item.Purchases</a>
}

答案 2 :(得分:0)

尝试一下:

    @foreach(var purchase in  item.Purchases)
        {
   <td>
        @Html.ActionLink(purchase.Name, "Purchases", "Purchase", new {id = purchase.PurchaseId})
   </td>
        }

答案 3 :(得分:0)

您可以在tr点击上使用jquery事件

首先,最好在tr内指定要发送的数据,如下所示:

<tr data-id="@item.ClientId"> [TDS] <tr>

然后您可以将您的jquery事件放在其他位置(在.js文件中)

$('#TableId tbody').on('click','tr', function(e){
    var Id = $(this).attr('data-id');
    window.location.href = "/Purchase/Purchases/id=" + Id;
});

答案 4 :(得分:0)

我要假设以下情况:“购买”是操作,“购买”是控制器,您想要单击任何字段的内容将带您到同一页面,其中包含有关以下内容的详细信息:该行中的项目(因为在给出的每个示例中都包含了ClientId)。

您需要为每个显示的字段创建一个ActionLink,如下所示:

@foreach (var item in Model)
{
    string selectedRow = "success";
    if (item.ClientId == ViewBag.ClientId)
    {
        selectedRow = "success";
    }
    <tr class="@selectedRow">
        <td>
            @Html.ActionLink(item.Name, "Purchase", "Purchases", new {id = item.ClientId }, null)
        </td>
        <td>
            @Html.ActionLink(item.Address, "Purchase", "Purchases", new {id = item.ClientId }, null)
        </td>
        <td>
            @Html.ActionLink(item.Number, "Purchase", "Purchases", new {id = item.ClientId }, null)
        </td>
        <td>
            @Html.ActionLink(item.Purchases, "Purchase", "Purchases", new {id = item.ClientId }, null)
        </td>
    </tr>
}

@Html.ActionLink的重载要求htmlAttributes为空值。 如果您的数据不是字符串类型(例如item.Number),则可以使用.ToString()