UmbracoForm:运行提交以外的操作

时间:2014-08-28 08:31:02

标签: c# asp.net-mvc-4 razor umbraco

我第一次使用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,这是一个无法找到的资源。

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

感谢您的时间。

2 个答案:

答案 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触发表单的提交。锚