在MVC4中,使用
Html.BeginForm("/", null, FormMethod.Post, new{something="demo"})
结果表格有
action="//"
因为它显然是试图将控制器和动作挤入网址。但是,我使用HomeController作为默认控制器,所以我不想在URL中使用/ Home / action。这在大多数地方都运作良好,但这种形式似乎让我感到沮丧
有什么想法吗?
答案 0 :(得分: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"})
然而,我会认为这是一个黑客,我会鼓励你解决实际的路线问题。