【问题标题】:How to post partial view to another controller method如何将部分视图发布到另一个控制器方法
【发布时间】:2010-09-29 13:56:12
【问题描述】:

我的 Index.aspx 视图中有一个单一表单标签。 Index.aspx 包含几个局部视图并使用相同的模型来呈现它们。

现在,当任何部分视图发布带有提交按钮的表单时,表单将发布到 OneActionMethod。但我希望一些部分视图将表单发布到 OtherActionMethod。

我怎样才能在不使用操作链接的情况下实现这一点,只在这个特定的空间视图中使用提交按钮?

我已经在 cmets 中为这个问题写了更新。我还不清楚答案。

【问题讨论】:

  • 不要这样做,每个局部视图都应该有自己的 Html.BeginForm(如果需要)。不要像 Webforms 一样思考一个大表单!使用母版页来定义布局,而不是表单
  • 如果我需要在一个表单中对一个相同的数据进行多种类型的编辑怎么办,所以我有选项:edit、edit1、edit2。这些是不同类型的编辑。由于我不能嵌套表单,所以正确的方法是什么?

标签: asp.net-mvc-2 partial-views


【解决方案1】:

我相信一点 javascript 就能完成你的工作。您必须挂钩表单的提交事件并更改表单的操作属性。记住动作是表单的属性,而不是提交按钮的属性。在 jquery 中你可以做类似的事情

$("#myform").submit(function(){
   if(isFirstSubmitButton){
    $(this).attr(FirstAction);
   }
   else if(isSecondSubmitButton)
   {
    $(this).attr(SecondAction);
   }
return true;
});

【讨论】:

  • 假设他可以接受他的应用程序在没有 Javascript 的情况下被完全破坏。
  • 同意 FlySwat,这似乎是个 hack。
  • 刚刚将此标记为答案,因为它更适合提问。当然,我仍然认为这是一种 hack,如果我们要以适当的方式制作东西,我们应该为每个局部视图使用一个表单。所以我赞成 FlySwat 的回答 :-)
【解决方案2】:

您听起来像是在尝试在 MVC 中编写“WebForms”样式。

为什么你有一个包含所有部分的大表格?将它们分成独特的形式,并让每一个都发布到相应的操作中。

编辑:随着您的进一步澄清,我唯一能想到的(除了重新设计以使用单个表单,如果他们想要共享数据会导致问题),就是发布到单个操作,然后路由根据特定的表单元素,向控制器中的私有成员请求 ActionA 或 ActionB。

【讨论】:

  • Its not one big form, its 相当小的表格,正在编辑小片段:-)。所以它@98​​7654322@s 不能t change it, its 我被要求这样做的方式。所以问题仍然存在:-)
  • 答案是将每个单独的部分移动到自己的形式中。表单应该只是要发布到操作的数据的逻辑分组。再多就是滥用。您需要重新考虑您的策略以采用 MVC 风格。
  • 感谢您的回答。请阅读我的更新,我对您对如何执行此操作的意见非常感兴趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
相关资源
最近更新 更多