所以我试图让两个控制器方法将数据发布到相同的[HttpPost]方法,我无法弄明白。
所以我在我的控制器中有这个方法:
// GET: MpSwitches/Create
public ActionResult Create()
{
return View();
}
这个方法:
public ActionResult FirstTimeStartupCreate()
{
ViewBag.FirstTime =
"Je bent doorgestuurd naar deze pagina omdat er nog geen MP-switches in de database staan.";
return View("Create");
}
当按下提交按钮时,他们都应该将数据发布到此方法。
// POST: MpSwitches/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost, ActionName("FirstTimeStartupCreate")]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "IpAdress")] MpSwitch mpSwitch)
{
if (ModelState.IsValid)
{
var mpSwitchMethods = new MpSwitch();
if (mpSwitchMethods.CreateMpSwitch(mpSwitch, _db))
{
// Success
return RedirectToAction("Index");
}
// Failed to insert into database
return View("Create", mpSwitch);
}
// Form hasn't been filled in correctly.
return View("Create",mpSwitch);
}
我添加了ActionName属性,因此FirstTimeStartupCreate将发布到此方法。但是现在Create方法不再发布到这个方法了。
有关如何解决此问题的任何提示?
答案 0 :(得分:1)
我不认为FirstTimeStartupCreate
符合你的想法。它不是定义回发如何工作的,它改变了该动作的名称,因此它不是方法名称,而是你在属性中所说的任何内容。
因此,这适用于FirstTimeStartupCreate
的原因是GET版本POST到相同的操作名称,但您现在有一个专门针对名称为Create
的POST的操作,因此它将使用该操作。您不再拥有名为Html.BeginForm
的POST操作,以便无法正常工作。
执行所需操作的正确方法是在视图中定义表单,您需要告诉它应该发布哪个控制器/操作。 Html.BeginForm("Create", "MyController")
有documentation但a lot of overloads。
所以在这种情况下你会做let printPyramid = (n) => {
if (n===0) {
return false;
} else {
let arr = [];
for(let i=0; i<n; i++) {
arr.push(i);
console.log(arr.toString());
}
}
}