Ian*_*son 4 .net asp.net asp.net-mvc mvc-editor-templates razor
我正在为大多数表单使用自定义编辑器模板,但在尝试使用它们呈现自定义对象选择器时,我发现没有简单的方法将有关包含上下文的信息传递给编辑器模板.
具体来说,我的主窗体呈现域对象的编辑,编辑器模板需要呈现一个AJAX选择器,其中包含依赖于域对象ID的对象列表.我正在使用当前additionalViewData参数传递ID ,我认为这很容易出错,因此非常难看.
我的表单包含类似于以下内容的代码:
@Html.EditorFor(model => model.CategoryId, new { id = model.id })
Run Code Online (Sandbox Code Playgroud)
编辑器模板包含如下代码:
@{
var domainObjectId = ViewData["id"] as int?;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用自定义ModelMetadataProvider选择对象选择器编辑器模板,并希望使用类似的技术将有关包含模型的信息传递给编辑器模板,但这似乎不可能.
所以,我的问题是:
ModelMetadataProvider将有关包含模型的信息传递给编辑器模板?additionalViewData参数传递每一条附加信息之外,还有更简洁/更容易的方法来实现我正在尝试的东西吗?提前致谢!
您需要了解EditorTemplates被设计为特定于类型,而不是特定于上下文.使用AdditionalViewData参数给出了一些想法,但这是你将获得的最好的.
如果您担心类型安全,请使用ViewBag,这是一个围绕ViewData的类型安全的动态包装器.
@{
var domainObjectId = ViewBag.Id;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7492 次 |
| 最近记录: |