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

问题描述:

我在Profile.cshtml上有2个按钮,即保存和取消。现在我的方法是这样的:保存并取消发布表格的按钮

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

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

+0

如何取消按钮提交表单?你能发布你的保存和取消按钮代码吗? – Ali

我经常使用传递给视图视图模型类,并在视图模型我:

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属性。不知道是否有重复的名字是一个坏主意,但为了我的需要,这很好。

+0

正是我在找的东西。谢谢杰森 – Jaggu

+0

没有probs,很高兴我可以帮助:) –

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

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

随意问任何问题,如果你需要。

通常你有保存按钮来提交你的表单,取消 - “按钮”只是一个ActionLink指向你的索引或任何东西。

+0

我不想动作链接。我的保存是一个按钮,我的取消按钮也是。 – Jaggu

+0

您可以将“链接”看起来像一个带有CSS的按钮 - 为什么自己在头脑中开枪,并将控制器更改为与您的视图很好地协作,以便您可以在视图中解决问题? – Carsten

在视图中,您可以有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() 
{ 
    ... 
} 
+0

好的解决方案:) – Jaggu

+0

这很好用。 – itsmatt