MVC自定义路由HttpPost失败

时间:2015-01-09 09:30:43

标签: c# asp.net-mvc vb.net razor

所以我有这样的自定义路线:

routes.MapRoute( _
            "Article", _
            "Article/{id}", _
            New With {.controller = "Article", .action = "Index", .id = UrlParameter.Optional} _
        )

我的控制器:

Function Index(Optional ByVal Id As String = "") As ActionResult

            If Id <> "" Then
                //do something
                Return View("ArticleDetail", model)
            Else
                Return View()
            End If
        End Function

<HttpPost()>
        Function Comment(ByVal model As ArticleModel) As ActionResult
            If ModelState.IsValid Then
                //do something
            End If

            Return View("ArticleDetail", model)
        End Function

我的观点:

Using Html.BeginForm("Comment", "Article", FormMethod.Post)

问题在于它不会让我调用“Comment”方法,而是将“Index”方法称为“Comment”,因为我的RouteConfig设置为“Id”。我如何实现这一目标?

抱歉英语不好,我们将不胜感激。

更新: 我尝试添加另一条路线,如'Dakshal Raijada'建议

routes.MapRoute( _
            "ArticleComment", _
            "Article/Comment", _
            New With {.controller = "Article", .action = "Comment"} _
        )

它可以工作,但由于某种原因,这会导致它在控制器之前调用我的模型构造函数,从而导致null模型。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

查看您的路由,无论什么

,您总是调用Index方法

尝试使用:

routes.MapRoute( _
    "Article", _
    "Article/{id}", _
    New With {.controller = "Article", .action = "Comment", .id = UrlParameter.Optional} _
)

评论是一项行动,而不是我。

希望有所帮助