如果我有一个 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/