保存并取消发布表单的按钮

时间:2011-09-14 07:56:42

标签: c# asp.net-mvc asp.net-mvc-3

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

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

这将记录保存到数据库中。但问题是因为取消也发布在这里,无论如何记录都保存在数据库中。我该如何处理?

4 个答案:

答案 0 :(得分: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()
{
   ...
}

答案 1 :(得分:1)

我经常使用传递给视图的viewmodel类,并且在那个viewmodel中我有:

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" />
}

这对我很有用。通过使提交按钮使用相同的名称,当按下任何一个时,该名称将传递给viewmodel的submit属性。不确定是否有重复的名称是一个坏主意,但根据我的需要它没关系。

答案 2 :(得分:0)

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

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

如果您需要,请随时提出任何问题。

答案 3 :(得分:0)

通常你有保存按钮来提交你的表格,取消 - “按钮”只是一个指向你的索引或其他的ActionLink。