gpt4 book ai didi

asp.net-mvc - 如何最好地实现保存|保存并关闭 |取消 ASP.NET MVC 3 RC 中的表单操作

转载 作者:行者123 更新时间:2023-12-02 08:01:47 26 4
gpt4 key购买 nike

我想知道在 asp.net mvc 3 RC 中提交表单时如何实现多个表单操作。

例如,如果我正在编辑用户,我希望有一个带有以下按钮的操作栏;

“保存”| “保存并关闭”| “取消”

保存 - 提交表单并保存,然后返回到编辑屏幕。可以很容易地实现为标准输入/提交按钮。这里没什么特别的。

Controller 代码可能如下所示

public ActionResult Edit(UserViewModel model)
{
...
return RedirectToAction("Edit", model.Id");
}

取消 - 只是返回到上一个屏幕。我正在考虑为此使用 anchor 标记。

<a href="@Request.UrlReferrer" class="button">Cancel</a>

但是当您需要提交相同的表单数据时,我对如何实现“保存并关闭”感到困惑。我想知道是否有一个可为空的关闭参数?

public ActionResult Edit(UserViewModel model, bool? close)
{
...
return close.GetValueOrDefault(false) ? RedirectToAction("Index", model.Id" : RedirectToAction("Edit", model.Id");
}

但是在这种情况下,如何将这个额外参数与表单一起提交?

如果可能的话,我希望有一个表单操作来处理提交,如上面的模型所示。

我也很感兴趣是否有其他人围绕这个想法提出了一个很好的用户交互模型。

解决方案

我最终使用了下面奥马尔的建议,但我没有传入一个字符串,而是传入了一个枚举,这样我就不必在所有 Controller 中进行字符串检查。

public ActionResult Edit(UserViewModel model, FormAction actionType)
{
// pre-check
if (actionType == FormAction.Cancel)
// just return user to previous view and don't save.

// Save code

if (actionType == FormAction.Save)
return ...
else if (actionType == FormAction.SaveAndClose)
....
}

因为我想要在<input>上有一个更友好的“保存并关闭”文本。按钮但想使用枚举,我为 FormAction 实现了一个自定义 ModelBinder 来进行解析。

我没有使用 <button>标签,因为 <input> 的主题已经就位。标签。

最佳答案

您可以在一个表单中拥有多个具有相同 name 的提交按钮属性但不同value属性。无论单击哪个按钮,都会关联 value将被发布到服务器。

您可以使用 Cancel 的简单链接但无论如何我都会将其作为按钮包含在内。

<input type="submit" name="actionType" value="Save" />
<input type="submit" name="actionType" value="Save and Close" />
<input type="submit" name="actionType" value="Cancel" />

并在您的行动中测试这些值。

public ActionResult Edit(string actionType)
{
if(actionType == "Save")
{
// Save action
}
else if (actionType == "Save and Close")
{
// Save and quit action
}
else
{
// Cancel action
}
}

如果您不喜欢value中的长文本属性,您可以使用标准 HTML <button>标签允许您定义单独的值和单独的文本。

关于asp.net-mvc - 如何最好地实现保存|保存并关闭 |取消 ASP.NET MVC 3 RC 中的表单操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com