UmbracForm:运行提交以外的操作

本文关键字:操作 提交 运行 UmbracForm | 更新日期: 2023-09-27 18:19:39

我第一次认真使用MVC在umbraco中建立解决方案。我已经设法使用BeginUmbracForm呈现了一个表单,并提交了数据,这起到了神奇的作用。

我的问题是,我想实现一个重置按钮,但由于我的数据在会话中,我必须重置服务器端。

视图:

@使用(Html.BeginUmbracForm<Site1.Controllers.SearchCriteriaSurfaceController>("搜索")){@*此处填写表格*@@Html.ActionLink("重置标准","重置","SearchCriteriaSurface",new{},null)<input class="btn-btn-primary"type="submit"value="立即搜索"/>}

控制器:

公共类SearchCriteriaSurfaceController:SurfaceController{[HttpPost]公共ActionResult搜索(SearchParams模型){SearchParams.Params=型号;ViewBag.HasSought=true;return CurrentUmbracPage();}[HttpPost]public ActionResult Reset(){SearchParams.ResetParams();return CurrentUmbracPage();}}

点击后,我被重定向到/umbraco/Surface/SearchCriteriaSurface/Reset,这是一个找不到的资源。

知道按下重置按钮后如何重新加载页面吗?

谢谢你抽出时间。

UmbracForm:运行提交以外的操作

您有两种选择(当然还有更多,但我不会去想它们):

1您可以使用两个不同的按钮提交

<button type="submit" name="SubmitAction" value="Reset">Reset</button>
<button type="submit" name="SubmitAction" value="Submit">Submit</button>

在视图模型中,您只需要一个"SubmitAction"属性,并且在操作中可以测试该值。有关讨论的更多详细信息,请参阅此处:如何在ASP.NET MVC Framework中处理多个提交按钮?

2使用单独的表格

您可以有一个单独的表单(完全隐藏),并在单击"重置"锚点时使用javascript触发表单提交。

@Html.ActionLink呈现一个锚点。锚点不是表单,并且不能重定向到HttpPost操作。

删除HttpPost或为重置功能创建一个新表单。