保存和取消按钮张贴表单



我有2个按钮,即保存和取消我的Profile.cshtml。现在我的方法是:

[HttpPost]
public ActionResult Profile()
{
  //code..
}

将记录保存到数据库中。但问题是,Cancel也在这里发布,记录保存在数据库中。我该如何处理?

在视图中,您可以有2个表单(每个按钮一个),其中每个表单的动作发送到控制器中的相关动作方法。例如,在视图中:

@using (Html.BeginForm("Save", "Profile"))
{
   <input type="submit" value="Save"/>
}
@using (Html.BeginForm("Cancel", "Profile"))
{
   <input type="submit" value="Cancel"/>
}

然后在控制器中:

[HttpPost]
public ActionResult Save()
{
   ...
}
[HttpPost]
public ActionResult Cancel()
{
   ...
}

我经常使用传递给视图的视图模型类,在该视图模型中我有:

public string submit { get; set; }
public bool SaveButtonClicked()
{
    return this.submit.Equals("save");
}
public bool CancelButtonClicked()
{
    return this.submit.Equals("cancel");
}

然后在控制器

[HttpPost]
public ActionResult Save(MyViewModel inputViewModel)
{
    if(inputViewModel.SaveButtonClicked()) {}
   blah.......
}

我的视图是这样的

@using (Html.BeginForm())
{
   // Other stuff.
   <input type="submit" name="submit" value="Save" />
   <input type="submit" name="submit" value="Cancel" />
}

这对我来说真的很有效。通过让提交按钮使用相同的名称,当按下其中一个按钮时,该名称将传递给视图模型的submit属性。我不确定是否有重复的名字是一个坏主意,但对于我的需要,这是很好的。

通常你有一个保存按钮来提交你的表单,取消按钮只是一个指向你的索引的ActionLink。

这听起来像你的取消按钮的type属性设置为submit。这将使表单提交,就像您按下保存按钮一样。

你应该问自己的问题是你想要"取消"按钮做什么?如果它只是一个没有完成表单的情况下,它可能会更好地使一个按钮转到另一个页面,否则,如果你需要将它指向一个ActionResult,那么你将不得不做一个重定向工作。

最新更新