MVC C# - 调用GET创建而不是POST创建按钮

时间:2014-10-15 13:45:57

标签: c# asp.net-mvc ef-code-first

在我的RequestController中,我有2个同名的方法,Create(),1个用于GET,1个用于POST。 我想在一个按钮中调用GET方法。 它的工作方式如下:

@Html.ActionLink("Create New", "Create")

但是在一个按钮中它调用了POST Create方法:

@using (Html.BeginForm("Create", "Request"))
{
    <button type="submit">New Request</button>
}

RequestController方法:

    //
    // GET: /Request/Create

    public ActionResult Create()
    {
        ViewBag.ID = new SelectList(db.Expenses, "ID", "Department");

        var destinations = from t in db.Typevalues
                           where t.Typeschema.SchemaCode == "CTY"
                           select t;

        ViewBag.Destinations = destinations;
        return View();
    }

    //
    // POST: /Request/Create

    [HttpPost]
    public ActionResult Create(Request request)
    {
        if (ModelState.IsValid)
        {
            db.Requests.Add(request);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.ID = new SelectList(db.Expenses, "ID", "Department", request.ID);
        return View(request);
    }

如何在按钮中调用GET方法?

4 个答案:

答案 0 :(得分:3)

在模板中指定表单方法:

@using (Html.BeginForm("Create", "Request", FormMethod.Get)) {
    <button type="submit">New Request</button>
}

答案 1 :(得分:2)

您应该使用纯HTML链接替换提交按钮:

<a class="button" href="@Url.Action("Create", "Request")">New Request</a>

并为您的样式添加“按钮”类以模拟按钮。 或者如果你想保留按钮:

<button type="submit" onclick="top.location.href='@Url.Action("Create", "Request")'; return false;">New Request</button>

答案 2 :(得分:2)

其他人所说的应该确实有效,但是,我鼓励你去思考你真正想要做的事情。基于你的代码,在我看来,使用常规链接(可以很容易地将其设置为按钮)会在语义上更有意义。

如果确实 某个需要提交数据的表单,我认为它不属于某种形式。

答案 3 :(得分:1)

在每个HTML表单中,您应指定表单方法,否则默认为。在你的情况下,一个表格(POST):

@using (Html.BeginForm("Create", "Request", FormMethod.Post))
{
    <button type="submit">New Request</button>
}

另一个(GET):

@using (Html.BeginForm("Create", "Request", FormMethod.Get))
{
    <button type="submit">New Request</button>
}

或者与你的相同,默认为GET:

@using (Html.BeginForm("Create", "Request"))
{
    <button type="submit">New Request</button>
}