MVC2 - 如何在每个页面上放置常见的LOGIC控件(如Search / Find)?

时间:2011-01-13 20:51:10

标签: asp.net asp.net-mvc-2 renderpartial renderaction

我无法弄清楚如何执行以下操作:

在每个页面(或我希望的每个页面)上,我想放置一个通用的控件小部件(例如思考 - 包含文本框+按钮的搜索功能)。什么是最好的方法,谁处理提交按钮(假设它是一个提交按钮)?

即。我的ViewUserControl是什么样的?它有表格吗?它是否使用jQuery onclick“”?它是否发布到主View的操作方法,还是可以将其重定向到另一个Controller / Action?

我尝试使用包含Form的“Search.ascx”的RenderAction,并由我的SearchController处理......但是在SearchController中,它然后尝试调用RedirectToAction ......我收到有关RedirectActions的投诉儿童行为不允许。

我对下一步该怎么做有点迷失,所以建议非常欢迎! 射线

5 个答案:

答案 0 :(得分:1)

您似乎走在了正确的轨道上(使用ViewUserControlRenderPartial)。但是根据您提供的信息,您不容易看到其他问题(RenderAction,...)

很容易:

  • 创建一个UserControl(.ascx)并在其中获取一个表格,其中URL为/ search / ...,您可以找回来。
  • 在您的视图中,调用RenderPartial并提供视图名称
  • 创建您的控制器以接收搜索中的帖子。这与父视图控制器不同。

答案 1 :(得分:0)

显示HTML元素的最佳方法是将它们放在母版页中,或者放在母版页引用的部分页面中。我希望它是自己的形式并提交给您的SearchController。

如果您想了解更多详情,请告诉我。

答案 2 :(得分:0)

RenderPartial是去这里的方式。您的control.ascx将包含它的表单和提交按钮。

答案 3 :(得分:0)

  

最好的方法是什么

可能是部分观点。 .ascx文件。

  

和谁处理提交按钮   (假设它是一个提交按钮)?

部分视图

  

我的ViewUserControl看起来如何   喜欢?它有表格吗?

是的,它有一个表格。它应尽可能自包含。

  

它是否使用jQuery onclick“”?可以   发布到主View的动作方法,   或者我可以将其重定向到另一个   控制器/动作?

嗯,最适合你的确切场景。它应该发布到最适合的行动。这不太可能是主视图的操作,因为partial在不同的父视图中重用。

  

我尝试过使用Ren的RenderAction   “Search.ascx”包含一个表格,   并由我的处理   SearchController ......但是在   SearchController,然后尝试   调用RedirectToAction ......我得到了一个   关于RedirectActions的投诉没有   允许儿童行动。

您可能希望在父视图中使用RenderPartial渲染它:

<%: Html.RenderPartial("MyPartialView.ascx") %>

答案 4 :(得分:0)

好的,我弄清楚我的问题是什么。上面的回复是正确的。我有自己的Search.ascx用户控件和SearchController,我也使用了RenderPartial,但是让我感到困惑的是我忘了明确指定控制器/动作......所以我在onclick事件和Url.Action上摆弄我而不是按钮。

<% using (Html.BeginForm("MySearchAction", "MySearchController")) { %>

感谢所有回复的人。