首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将视图模型绑定到部分视图

问将视图模型绑定到部分视图
EN

Stack Overflow用户
提问于 2016-10-23 12:52:54
回答 2查看 2.8K关注 0票数 0

我有一个模型,可以代表3类。我想,在我看来,为每个类别制作3个不同的表格,并包含相关的字段。为此,我需要对每个类别使用部分视图和视图模型。

因此,我的主要模式是“广告”,其中有3个子视图模型(不动产,汽车和服务)。这里的示例是如何在我的主控制器上实现不动产操作的:

代码语言:javascript
复制
public ActionResult Realty()
    {
        var ads = db.Ads.Include(a => a.Realty);
        var vm = new List<RealtyViewModel>();

        foreach (var ad in ads)
        {
            vm.Add(new RealtyViewModel
            {
                Title = ad.Title,
                Descirpiton = ad.Descirpiton,
                Type = ad.Realty.Type,
                NumberOfRooms = ad.Realty.NumberOfRooms
            });
        }

        return PartialView(vm);
    }

那么我的部分观点是这样的:

代码语言:javascript
复制
@model IEnumerable<OGAS.Areas.Category.ViewModels.RealtyViewModel>

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Type)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Descirpiton)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.NumberOfRooms)
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Title)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Type)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Descirpiton)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.NumberOfRooms)
            </td>
        </tr>
    }

</table>

然后,在“索引”页面(不使用任何模型)中,我调用以下部分视图:

代码语言:javascript
复制
@{Html.RenderPartial("Realty");}

但接下来我会发现以下错误:

“System.NullReferenceException”类型的异常发生在App_Web_gdyh352c.dll中,但未在用户代码中处理

请您告知这种方法是否好(调用3 vms),如果是,如何实现这一点?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-23 13:56:59

尝试替换@{Html.RenderPartial("Realty");}并在本例中使用@Html.Action("Realty"),因为您需要调用控制器操作,以便为部分视图创建模型。

有关详细信息,请参阅MVC Html.Partial or Html.Action。

票数 1
EN

Stack Overflow用户

发布于 2019-01-29 07:15:10

使用这个,用于.net核心和mvc。@Html.Action已从.net核心中删除

代码语言:javascript
复制
 @await Html.PartialAsync("_YourPartialViewName", YourModel)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40203135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档