首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使部分视图真正可重用

使部分视图真正可重用
EN

Stack Overflow用户
提问于 2014-06-11 04:14:33
回答 1查看 136关注 0票数 0

我的目标是创建一个局部视图,它可以跨MVC应用程序在许多其他视图中使用。此部分视图将接受来自父视图的模型的数据,以用作其模型。

我的问题是,我不知道如何将这些数据从父视图的模型发送到部分视图。下面是一些代码:

父视图的模型类:

代码语言:javascript
复制
public class TestModel
{
    public int ID { get; set; }
    public string Name { get; set; }
    public GlobalPartialView GPV { get; set; }
}

分部视图的模型类:

代码语言:javascript
复制
public class GlobalPartialView
{
    public string PartialViewString { get; set; }
}

父视图:

代码语言:javascript
复制
@model TestMVC_CRUD.Models.TestModel

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>


<div>
    <div>ID: @Model.ID</div>
    <div>Name: @Model.Name</div>
</div>

@Html.Partial("_GlobalPartialView", Model.GPV);

局部视图:

代码语言:javascript
复制
@model TestMVC_CRUD.Models.GlobalPartialView

@{
    ViewBag.Title = "View1";
}

<h2>View1</h2>

<div>Value: @Model.PartialViewString</div>

此代码不起作用。局部视图将不接受Model.GPV作为其模型。

如何将子对象从父视图的模型发送到局部视图以用作其模型?此外,如果有更好的方法来实现这一点,我很想听听。

EN

回答 1

Stack Overflow用户

发布于 2014-06-11 04:35:22

这段代码应该可以工作。看起来您在呈现父视图时忘记了填充主视图模型的GPV属性。你只是得到了一个NRE,因为你的局部视图正在访问@Model.PartialViewString

确保呈现父视图的控制器操作实际上填充了GPV属性:

代码语言:javascript
复制
var model = new TestModel();
model.GPV = new GlobalPartialView();
model.GPV.PartialViewString = "The foo bar";
return View(model);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24150075

复制
相关文章

相似问题

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