问题陈述:
在MVC中,当我尝试在某个razor视图(.cshtml)中对某些字段使用LabelFor()而不是DisplayNameFor()时,它给出的错误如下:System.Collections.Generic.IEnumerable(Test.Models.TenantModel)不包含TenantID、Name、address1。。。。。但是它可以与displaynameffor()一起工作……为什么???
而不是使用:

@Html.DisplayNameFor(model => model.TenantID)

我想使用:
@Html.LabelFor(model => model.TenantID)

因为我将显示名作为LabelFor()from viewbag对象(来自db)的第二个参数传递。
请给我一些建议好吗??
视图代码:
   @model IEnumerable<Test.Models.TenantModel>

    @{
        ViewBag.Title = "Index";
    }
    <h2>Tenant</h2>


    <p>
        @Html.ActionLink("Create New", "Create")
    </p>

    <table style="border-collapse: separate; border-spacing: 15px;">
        <tr>
            @foreach (var item in ViewBag.TenantControl)
            {
                for (int i = 0; i < ViewBag.TenantLanguage.Count; i++)
                {

                    if (item == "1")
                    {
                        if (i == 0)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.TenantID)
                        </th>
                            break;
                        }
                    }

                    else if (item == "2")
                    {
                        if (i == 1)
                        {
                            <th style="text-align: center;">
                                @Html.DisplayNameFor(model => model.Name)
                            </th>
                            break;
                        }
                    }


                    else if (item == "3")
                    {
                        if (i == 2)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.Address1)
                        </th>
                            break;
                        }
                    }

                    else if (item == "4")
                    {
                        if (i == 3)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.Address2)
                        </th>
                            break;
                        }
                    }

                    else if (item == "5")
                    {
                        if (i == 4)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.Address3)
                        </th>
                            break;
                        }
                    }
                    else if (item == "6")
                    {
                        if (i == 5)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.CountryID)
                        </th>
                            break;
                        }
                    }

                    else if (item == "7")
                    {
                        if (i == 6)
                        {
                            <th style="text-align: center;">
                                @Html.DisplayNameFor(model => model.StateID)
                            </th>
                            break;
                        }
                    }

                    else if (item == "8")
                    {
                        if (i == 7)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.CityID)
                        </th>
                            break;
                        }
                    }

                    else if (item == "9")
                    {
                        if (i == 8)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.Pin)
                        </th>
                            break;
                        }
                    }
                    else if (item == "10")
                    {
                        if (i == 9)
                        {
                        <th style="text-align: center;">
                            @Html.DisplayNameFor(model => model.Phone)
                        </th>
                            break;
                        }

                    }
                }
            }
            <th></th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                @foreach (var itm in ViewBag.TenantControl)
                {
                    if (itm == "1")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.TenantID)
                    </td>
                    }
                    else if (itm == "2")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.Name)
                    </td>
                    }
                    else if (itm == "3")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.Address1)
                    </td>
                    }
                    else if (itm == "4")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.Address2)
                    </td>
                    }
                    else if (itm == "5")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.Address3)
                    </td>
                    }
                    else if (itm == "6")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.CountryModel.Name)
                    </td>
                    }
                    else if (itm == "7")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.StateModel.Name)
                    </td>
                    }
                    else if (itm == "8")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.CityModel.Name)
                    </td>
                    }
                    else if (itm == "9")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.Pin)
                    </td>
                    }
                    else if (itm == "10")
                    {
                    <td style="text-align: center;">
                        @Html.DisplayFor(modelItem => item.Phone)
                    </td>
                    }
                }
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id = item.TenantID }) |
                @Html.ActionLink("Details", "Details", new { id = item.TenantID }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.TenantID })
                </td>
            </tr>
        }

    </table>

控制器代码:
 public ActionResult Index()
    {
        var result = GetTenantData();
        return View(result);
    }



public IEnumerable<TenantModel> GetTenantData()
        {
            return (from t in db.Tenant.AsEnumerable()
                    join c in db.Country.AsEnumerable() on t.CountryID equals c.CountryID
                    join s in db.State.AsEnumerable() on t.StateID equals s.StateID
                    join ct in db.City.AsEnumerable() on t.CityID equals ct.CityID
                    orderby t.Name
                    select new TenantModel()
                    {
                        TenantID = t.TenantID,
                        Name = t.Name,
                        Address1 = t.Address1,
                        Address2 = t.Address2,
                        Address3 = t.Address3,
                        CountryID = t.CountryID,
                        StateID = t.StateID,
                        CityID = t.CityID,
                        CountryModel = c,
                        StateModel = s,
                        CityModel = ct,
                        Pin = t.Pin,
                        Phone = t.Phone,

                    });
        }

最佳答案

我不知道这两个函数之间有什么区别,但是当您调用DisplayNameFor(model=>…)时,模型的类型是Test.model s.TenantModel,而使用LabelFor(model=>…)时,它是IEnumerable(这对我来说更有意义,因为这是您在视图中声明的)。
如果你真的想让它在你的视图中工作,你可以使用

Html.LabelFor(model => model.FirstOrDefault().TenantID)

但如果你的书包里有一个空的列表,我不确定它是否有效。

关于.net - 在MVC(Razor)中将LabelName()替换为DisplayNameFor()导致错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22378310/

10-09 05:11