asp.net mvc中的多表单页面问题

时间:2009-02-01 23:17:32

标签: asp.net-mvc

在用于添加类别的表单中,我正在呈现包含用于添加子类别的第二表单的控件。类别表单的操作是category / add,而内部表单的操作是../addSubcategory。我的问题是,在提交内部表单时,我的Add操作被调用。

所以,我的问题是:我怎样才能使我的内部形式激活动作addSubcategory?

真的很感激任何帮助!

2 个答案:

答案 0 :(得分:1)

如果您使用AJAX发布,您可以编写自己的js方法,点击提交按钮时触发,调用正确的操作方法。

如果您不使用AJAX,我建议您在标记中分离两个表单,然后将类别表单中的子类别表单与css对齐。在类别表单中使用空div作为“spacer”,为子类别表单腾出空间。

半假例子,(希望)更明确我的意思:

<form name="categoryForm" id="catForm" action="/Category/Add">
<!-- some form elements here... -->
<div id="subCategorySpacer">&nbsp</div>
<!-- maybe some more form elements... -->
<input type="submit">
</form>

<form name="subCategoryForm" id="subCatForm" action="/Category/addSubcategory">
<!-- form elements here too. and a submit button -->
</form>

然后使用css将子类别表单移动到您的spacer div的位置。当然,这要求您知道表单的确切大小,或者使用javascript在客户端调整大小。

答案 1 :(得分:0)

我担心你会说“内心形式”。页面上可以有两个(或更多)表单,但不能嵌套它们。这可能是造成你的错误的原因。

无论有没有AJAX,您都需要在页面上有两个单独的表单。我强烈建议使用实际表单,即使使用AJAX提交,因为如果您不这样做,您将无法优雅地回退到已禁用JavaScript的用户的常规表单提交。 ASP.NET MVC Ajax.Form帮助程序将为您处理此问题。确保在控制器操作中测试Request.IsAjaxRequest以确定是返回JSON还是新视图。