在 MVC4 中,使用
Html.BeginForm("/", null, FormMethod.Post, new{something="demo"})
结果形式有
action="//"
因为它显然是在试图将控制器和操作挤入 url。但是,我使用 HomeController 作为默认控制器,所以我不希望 /Home/action 在 url 中。这在大多数地方都运行良好,但这种形式似乎让我绊倒了
有任何想法吗?
在 MVC4 中,使用
Html.BeginForm("/", null, FormMethod.Post, new{something="demo"})
结果形式有
action="//"
因为它显然是在试图将控制器和操作挤入 url。但是,我使用 HomeController 作为默认控制器,所以我不希望 /Home/action 在 url 中。这在大多数地方都运行良好,但这种形式似乎让我绊倒了
有任何想法吗?
那不是控制器名称。你会做这样的事情:
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,我会鼓励您解决实际的路线问题。