在我的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方法?
答案 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>
}