c# - 将数据从分部 View 传递到其父 View

标签 c# asp.net-mvc razor

如果我有一个 View 和一个局部 View ,有什么方法可以将数据从局部 View 传递给父 View 吗?

所以如果我有 View.cshtml:

<div id="@someDataFromPartialSomehow">
    @Html.Partial("_PartialView")
</div>

_PartialView.cshtml:

@{ someDataFromPartialSomehow = "some-data" }

<div>
    Some content
</div>

我将如何着手实现这样的事情?

我尝试使用 ViewBag.SomeDataFromPartialSomehow,但这只会导致父级中的 null


尝试

为了解决在调用之前生成数据的问题,我尝试了这个:

View.cshtml:

@{ var result = Html.Partial("_PartialView"); }

<div id="@ViewData["Stuff"]">
    @result
<div>

_PartialView.cshtml:

@{ ViewData["Stuff"] = "foo"; }

<div>
    Content
</div>

但不幸的是,调用 @ViewDate["Stuff"] 仍然没有呈现任何内容。

最佳答案

您可以使用 HttpContext 在 View 之间共享状态。

@{
    this.ViewContext.HttpContext.Items["Stuff"] = "some-data";
}

然后:

@{ var result = Html.Partial("_PartialView"); }

<div id="@this.ViewContext.HttpContext.Items["Stuff"]">
    @result
<div>

除了您在问题中显示的示例:

<div id="@someDataFromPartialSomehow">
    @Html.Partial("_PartialView")
</div>

您正在尝试使用 someDataFromPartialSomehow 甚至 BEFORE 调用分部 View ,这显然是不可能的。

另请记住,您要实现的是糟糕的设计。如果部分 View 只能在某些特定父级的上下文中工作,那么您可能需要重新考虑 View 分离。部分 View 必须是独立的和可重用的,无论它被放置在哪个上下文中。如果它假设有关托管父级的事情,那么这里存在严重的设计问题。

关于c# - 将数据从分部 View 传递到其父 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766502/

相关文章:

c# - 文本框和标签之间的一致空间和对齐方式

c# - 转换 Html Contenttpo Word 文档时出错

表单 runat=server 中的 Javascript 验证

javascript - 使用 JavaScript 将文本从一个文本框发送到另一个文本框

.net - 如何在 Entity Framework 中使用数据库优先方法使用存储库模式

javascript - 如何在单击时从 JavaScript 添加参数到 @Url.Action() 调用

javascript - 如何开发一个搜索选项以在 MVC View 表中按列搜索

javascript - 我想知道如何在不通过 chrome 打印弹出窗口的情况下与网络中的打印机通信

properties - Umbraco - 如何使用 razor 脚本设置属性的值

asp.net-mvc-3 - 美元符号和/或 Dash 破坏 Razor 的解析器