【发布时间】:2010-11-01 10:49:51
【问题描述】:
假设我有 2 个控制器,TopicsController 和 PostsController。
对于每个控制器,我有几个视图(索引和详细信息)。
主题(索引) 视图继承 System.Web.Mvc.ViewPage<IEnumerable<MessageBoard.Models.Topic>>
Topic (Details) 视图继承了System.Web.Mvc.ViewPage<MessageBoard.Models.TopicFormViewModel>
我正在使用 TopicFormViewModel,因为我正在与模型一起发送额外的数据。 p>
Post (Details) 视图仅继承 System.Web.Mvc.ViewPage<MessageBoard.Models.Post>
现在,我创建了一个局部视图 (CreatePost.ascx),它(显然 :p)用于创建新帖子。我希望能够在您在上面看到的所有视图上重复使用此控件。
更新
我尝试使用 Topics/Index.aspx 视图中的<% Html.RenderPartial("New"); %> 渲染部分视图,但这会导致异常
传入字典的模型项的类型为“System.Data.Linq.Table`1[MessageBoard.Models.Topic]”,但此字典需要“MessageBoard.Models.Post”类型的模型项。
现在的问题是我的部分视图 (CreatePost.ascx) 接受 System.Web.Mvc.ViewUserControl<MessageBoard.Models.Post>,我不确定如何从上面的所有视图中传递它.
我也不确定如何将 .ascx 值提交到某个 URL(即 /Topics/1/CreatePost),我如何告诉提交按钮发布到该 URL?
提前致谢,
马尔科
【问题讨论】:
-
呃,为什么要投反对票?似乎有人在开玩笑,并否决了我的问题。
-
CreatePost上面有哪些表单元素?为什么是Post类型?不是从头开始创建一个帖子,因此帖子还不存在吗? -
@p.campbell - 你是对的。我想要传递模型的原因实际上是每个帖子都与一个主题相关联,我需要 ID 以便我可以在正确的位置创建帖子。我现在已经使用 ViewData 来做到这一点,而且它似乎工作得很好。我唯一担心的是必须从每个在页面上具有 Add Post 表单的控制器 Action 传递 ViewData,但我可以处理这个问题。这是我的第一个项目,所以还在学习:)
标签: c# asp.net-mvc viewmodel