我在Profile.cshtml上有两个按钮,即保存和取消。现在我的方法是这样的:
[HttpPost]
public ActionResult Profile()
{
//code..
}
这将记录保存到数据库中。但问题是因为取消也发布在这里,无论如何记录都保存在数据库中。我该如何处理?
答案 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。