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

ASP.NET MVC – 将外部模型传递给编辑器模板

发布时间:2020-12-16 06:26:31 所属栏目:asp.Net 来源:网络整理
导读:我正在为大多数表单使用自定义编辑器模板,但在尝试使用它们呈现自定义对象选择器时,我发现没有简单的方法将有关包含上下文的信息传递给编辑器模板. 具体来说,我的主窗体呈现域对象的编辑,编辑器模板需要呈现一个AJAX选择器,其中包含依赖于域对象ID的对象列表
我正在为大多数表单使用自定义编辑器模板,但在尝试使用它们呈现自定义对象选择器时,我发现没有简单的方法将有关包含上下文的信息传递给编辑器模板.

具体来说,我的主窗体呈现域对象的编辑,编辑器模板需要呈现一个AJAX选择器,其中包含依赖于域对象ID的对象列表.我正在使用当前的additionalViewData参数传递ID,我认为这很容易出错,因此非常难看.

我的表单包含类似于以下内容的代码:

@Html.EditorFor(model => model.CategoryId,new { id = model.id })

编辑器模板包含如下代码:

@{
var domainObjectId = ViewData["id"] as int?;
}

我正在使用自定义的ModelMetadataProvider来选择对象选择器编辑器模板,并希望使用类似的技术将有关包含模型的信息传递给编辑器模板,但这似乎是不可能的.

所以,我的问题是:

>无论如何使用ModelMetadataProvider将有关包含模型的信息传递给编辑器模板?
>如果没有,除了通过弱类型的additionalViewData参数传递每一条附加信息之外,还有更简洁/更简单的方法来实现我正在尝试的东西吗?

提前致谢!

解决方法

您需要了解EditorTemplates被设计为特定于类型,而不是特定于上下文.使用AdditionalViewData参数给出了一些想法,但这是你将获得的最好的.

如果您担心类型安全,请使用ViewBag,这是一个围绕ViewData的类型安全的动态包装器.

@{
    var domainObjectId = ViewBag.Id;
}

(编辑:李大同)

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

    推荐文章
      热点阅读