【发布时间】:2009-02-21 04:21:37
【问题描述】:
我正在尝试在 ASP.NET MVC 中构建自定义控件。我要避免在这些控件中混合视图 (html) 和代码 (C#)。
经过数小时的谷歌搜索和努力解决这个问题后,我终于想到了创建使用 ASP 视图引擎的辅助方法(认为 ViewPage 类)。
我能够创建类的实例,甚至可以使用 LoadControl 和 LoadTemplate 方法加载 ascx 模板,但问题是当我将 ViewData 对象传递给 ViewPage 类的实例时,我在 ViewPage 中看不到 ViewData我收到了这个错误:
ViewUserControl '~/Components/Controls/EditableLabel/Views/EditableLabel.ascx' 找不到 IViewDataContainer。 ViewUserControl 必须位于 ViewPage、ViewMasterPage 或另一个 ViewUserControl 内。
一般我想要达到的最终效果是加载带有一些参数的控件,这些参数在模板(ascx)中应该是可读的。
示例:
<% Html.EditableLabel(Writer, "memberName", "Name", "Antonio", "/identity/updateProperty", "memberName"); %>
- 有没有办法将 ViewData 传递给我创建的 ViewPage 实例?
- 是否有更智能的方法在 ASP.NET MVC 中创建自定义控件/小部件?
提前致谢
【问题讨论】:
标签: c# .net asp.net-mvc