加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 仅将值从EditorTemplate传递到其布局模板,在mvc

发布时间:2020-12-16 09:42:10 所属栏目:asp.Net 来源:网络整理
导读:有没有办法将值从EditorTemplate传递到它的布局(不是网站_Layout,而是模板布局) 在MVC 5我有这样的事情: EditorTemplates / MyStr.cshtml @{ Layout = "_FieldLayout.cshtml"; ViewData.ModelMetadata.AdditionalValues.Add("__idpostfix","-cde");}@Html.C
有没有办法将值从EditorTemplate传递到它的布局(不是网站_Layout,而是模板布局)

在MVC 5我有这样的事情:
EditorTemplates / MyStr.cshtml

@{
    Layout = "_FieldLayout.cshtml";
    ViewData.ModelMetadata.AdditionalValues.Add("__idpostfix","-cde");
}
@Html.CustomHelper("")

CustomHelper使用2个输入标签,一个用于显示/编辑,另一个用于保持值,两个都有id,显示一个有-cde后缀
和_FieldLayout.cshtml有这个:

@{
    var postfix = ViewData.ModelMetadata.AdditionalValues.ContainsKey("__idpostfix") ? ViewData.ModelMetadata.AdditionalValues["__idpostfix"] : string.Empty;
}
@Html.Label("",new {@for = ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty) + postfix})
...

现在在mvc 6中AdditionalValues是一个ReadOnly字典,所以有另一种方法可以做到这一点,我最好的选择是在我需要后缀时使用不同的FieldLayout

解决方法

您可以使用ViewData将数据从子视图传递到其布局页面(这不是特定于编辑器模板).

在EditorTemplates / MyStr.cshtml中,您可以设置ViewData [“somedata”] =“some value”;然后在_FieldLayout.cshtml中,您可以轻松地使用它.

布局的“子”页面首先运行,因此任何具有副作用的代码(例如设置ViewData)都将对布局页面可见.

另请注意,给定页面的ViewData不会泄漏“备份”,因此在使用后无需重置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读