我第一次使用MVC在umbraco中建立了一个解决方案。我已设法使用BeginUmbracoForm呈现表单,并提交数据,这可以创建奇迹。
我的问题是,我想实现一个重置按钮,但由于我的数据在Session中,我必须重置服务器端。
查看:
@using (Html.BeginUmbracoForm<Site1.Controllers.SearchCriteriaSurfaceController>("Search")) { @*Form here*@ @Html.ActionLink("Reset criterias", "Reset", "SearchCriteriaSurface", new {}, null) <input class="btn btn-primary" type="submit" value="Search now" /> }
控制器:
public class SearchCriteriaSurfaceController : SurfaceController { [HttpPost] public ActionResult Search(SearchParams model) { SearchParams.Params = model; ViewBag.HasSought = true; return CurrentUmbracoPage(); } [HttpPost] public ActionResult Reset() { SearchParams.ResetParams(); return CurrentUmbracoPage(); } }
点击后,我会被重定向到/ umbraco / Surface / SearchCriteriaSurface / Reset,这是一个无法找到的资源。
知道如何在点击重置按钮后重新加载页面吗?
感谢您的时间。
答案 0 :(得分:0)
@Html.ActionLink
呈现锚点。锚不是表单,也无法重定向到HttpPost
操作。
删除HttpPost
或为重置功能创建新表单。
答案 1 :(得分:0)
你有两种选择(当然还有更多选择,但我不能想到这些选择):
1您可以使用两个不同的按钮提交
<button type="submit" name="SubmitAction" value="Reset">Reset</button>
<button type="submit" name="SubmitAction" value="Submit">Submit</button>
在您的视图模型中,您只需要一个&#39; SubmitAction&#39;属性和您可以测试此值的操作。有关讨论的更多详细信息,请参见此处:How do you handle multiple submit buttons in ASP.NET MVC Framework?
2使用单独的表格
您可以完全拥有一个单独的表单(隐藏),并在您单击&#34;重置&#34;时使用javascript触发表单的提交。锚