1

在 MVC4 中,使用

Html.BeginForm("/", null, FormMethod.Post, new{something="demo"})

结果形式有

action="//"

因为它显然是在试图将控制器和操作挤入 url。但是,我使用 HomeController 作为默认控制器,所以我不希望 /Home/action 在 url 中。这在大多数地方都运行良好,但这种形式似乎让我绊倒了

有任何想法吗?

4

1 回答 1

2

那不是控制器名称。你会做这样的事情:

Html.BeginForm("Index", "Home", FormMethod.Post, new {something="demo"})

如果您的路由设置正确并且 Home/Index 是您的默认根路由,那么在渲染时,它将渲染到“/”。MVC 会自动优化路由以显示默认最小值(这是唯一的“/”)

如果您没有看到“/”,请查看您的路由,因为它无法正确反向生成 URL(可能不止一个路由匹配)。

如果您使用 Home/SomethingElse 并且它不是默认路由,那么我不太明白您想要做什么,因为您需要指定 Controller/Action 才能发布到它。

虽然我不推荐它,但您也应该能够做到这一点:

Html.BeginForm(null, null, FormMethod.Post, new {action="/", something="demo"})

但是,我认为这是一种 hack,我会鼓励您解决实际的路线问题。

于 2013-03-24T10:32:57.393 回答