我可以在没有BeginForm的情况下转发到HttpPost方法吗?

时间:2014-07-17 14:55:19

标签: asp.net-mvc http-post

我是MVC的新手,但仍然没有办法做到这一点。

在视图中我有这个克隆按钮:

<a href="@Url.Action("Clone", "Game", new { pModelId = Model.Id })" class="btn btn-default btn-xs">
                            <i class="fa fa-plus"></i>Clone Game</a>

在我的控制器中:

[HttpPost]
    public ActionResult Clone(int pGameId)
    {
        int lClonedGameId = mGameRepository.CloneGame(pGameId);
        return RedirectToAction("Show", new { id = lClonedGameId, message = "Your game was cloned succesfully" });
    }

由于[HttpPost]我得到了404,但我不想让它[HttpGet]因为它写入数据库。有没有办法让该按钮转到没有BeginForm的HttpPost方法或类似的东西?

1 个答案:

答案 0 :(得分:2)

如果这只是一个链接而不是按钮来提交表单的问题,我建议您在按下链接时添加表单并使用javascript提交表单(下面的代码假设您使用的是jQuery):

@using (Html.BeginForm("Clone", "Game", FormMethod.Post, new {id = "form1"}))
{
    //Your other elements go here
    <a href="#" class="cloneGameSubmit">CloneGame</a>
}

勾住剧本:

$(function() {
    $("a.cloneGameSubmit").click(function () {
        $("#form1").submit();
    });
});