我有以下结构的剃刀视图:
部分视图A过滤部分视图B.部分视图B过滤部分视图C. 部分视图D正在过滤部分视图E.
部分视图C然后打开带有表单的jQuery UI对话框,在部分视图E中显示的表中输入数据。
我的问题是如何将数据从部分D发送到部分C?
视图A,B和C正在访问控制器A和视图模型X,视图D和E正在访问控制器B和视图模型Y. 当第一次加载页面时,视图A和D被同时加载,并且它们具有固定值。
部分视图A,B和C也是共享视图。
这是index.cshtml的代码:
@model WebApplication3.ViewModels.projekatViewModel
@using PagedList.Mvc;
@{
ViewBag.Title = "Rad sa projektima";
}
<h2>Rad sa projektima</h2>
<div id="dialog-edit"></div>
<div id="mainWrap">
<div id="mainLeft">
<div id="pKNormativa">
<div id="KnjigeNormativa">@Html.Partial("A", Model, null)</div>
</div>
<div id="pGrupe">
<div id="GrupeRadova"> @Html.Partial("B", Model, null)</div>
</div>
</div>
<div id="mainRight">
<div id="pPozicije">
<div id="Pozicije"> @{ Html.RenderPartial("C", Model.pozicije, null); }</div>
</div>
</div>
</div>
<div id="projectWrap">
<div id="projects">
@Html.Partial("D")
</div>
<div class="CSSTableGenerator" id="Projekat">
@Html.Partial("E", Model.projekti)
</div>
</div>
部分视图内部没有任何特殊内容,只是foreach呈现<table>
来显示数据,而一个ajax.actionlink来调用控制器并在下一个视图中按顺序显示数据......
有人可以帮我这个吗?
答案 0 :(得分:2)
您可以使用HttpContext.Items
在视图之间共享数据。
@{
this.ViewContext.HttpContext.Items["Stuff"] = "some-data";
}
此数据对单个HTTP请求有效。您还可以在父视图和部分视图之间共享数据。
更多信息:
https://msdn.microsoft.com/en-us/library/system.web.httpcontext.items(v=vs.110).aspx
When can we use HttpContext.Current.Items to stores data in ASP.NET?
答案 1 :(得分:0)
很高兴看到您的视图以及如何调用这些部分,但您可以将数据/模型传递给任何部分。对于每个部分的指定模型,这会变得棘手,因此有时可以更容易地回退到可以从控制器设置的ViewData:
@{Html.RenderPartial("~/Views/Shared/partialA", ViewData["commonPartialData"]);}