为按钮添加多个ActionName

时间:2012-06-20 07:45:26

标签: asp.net-mvc

我有一个控制器,我有一个保存按钮点击事件。我使用相同的控制器和视图添加和编辑目的。我的代码如下所示

[HttpPost]
            [Button(ButtonName = "Save")]
            [ActionName("Create")]
            [ValidateAntiForgeryToken(Salt = "PostData")]
            public ActionResult Save(Ntegra m_Ntegra,FormCollection form)
            {}

因为我在这里使用ActionName("创建")所以按钮不能用于ActionName("编辑")。任何人都可以告诉我如何能够实现我的要求! 谢谢你的帮助......:)

3 个答案:

答案 0 :(得分:0)

您可以使用一个视图,例如Edit or Create,但您需要编写2个不同的Controllor操作(创建,编辑)。

请参考MVC Music store CodePlex project,它可以让您了解使用的约定和编写标准MVC代码

答案 1 :(得分:0)

您可以使用名为Save的操作方法并传递模型。在操作方法中,您可以检查模型中是否存在ID。如果有预定义的ID,您可以更新记录,否则您可以创建新记录。 IN You对于FormCollection,在渲染表单时使用隐藏字段来存储Id字段。

public ActionResult Save(FormCollection form)
            {}

答案 2 :(得分:0)

对于createedit,实际上并不需要两个控制器操作,您可以使用ActionName属性进行单个操作而不进行装饰。

在单一控制器操作中,您必须检查要保存的实体的id,如果有某个值,则将编辑其他创建。

[HttpPost]
public ActionResult Save(Ntegra m_Ntegra)
{
  if(m_Ntegra.Id == 0)
  {
    // create
  }
  else
  {
    // edit
  }
}