母版页和视图中的表单

时间:2008-11-30 17:58:42

标签: asp.net-mvc

我有一个主页面,我的所有观点都是从这个页面继承的。我遇到的问题是使用在母版页中创建的表单标记,然后是在视图中创建的表单标记。

由于表单位于母版页表单内,所有我的回发都被发送到控制器索引方法,它迫使我创建一个强制HttpPost的新方法索引。

此外,这会导致以下路由出现问题:/ projects / add /和/ projects / delete / 1,其中所有内容都是索引方法的路由器。

WTF?我在这里错过了什么吗?

谢谢任何人

4 个答案:

答案 0 :(得分:1)

从母版页中删除表单。

查看一些示例视频here,以更好地了解MVC理念。

BTW:在ASP.NET MVC中,没有回发。

答案 1 :(得分:1)

在我看来,你真的应该将MasterPages视为布局而不是功能页面。事实上,视图根本不会从母版“继承”。在传统的Webforms中,masterpages实际上是用户控件。所以我会尝试不将基类功能放入母版页。所以也许这就是一些混乱的地方。

答案 2 :(得分:0)

ASP.NET MVC不应该做“PostBacks”...这完全忽略了这一点。删除你所拥有的任何“很大程度上包含形式的标签”,并且只在输入字段周围放置一个“表单”标签,用于(为特定目的)POST以进行某种操作。

你拥有一个全方位的表单标签(与传统的asp.net一样)意味着你没有为该表单定义的原因,并且(再次)错过了MVC的观点。

这是一篇较旧的文章,但它可以帮助解决传统和MVC之间的差异:ASP.NET MVC in the Real World

答案 3 :(得分:0)

如果您需要在每个页面上使用常用表单元素,那么您在主页上有表单的原因,然后将表单元素与您的site.master文件一起移动到位于共享文件夹中的用户控件。然后在每个视图页面中通过Html.RenderPartial包含用户控件。这只需要1行代码,每个视图可能需要一个div标签,这不是坏事。

BTW是位于主页面中的表格,是偶然的登录或搜索控件吗?