0

使用 Umbraco 7 - 我想执行表单发布,但如果模型状态验证失败,则将用户返回到当前表单。

然而,该应用程序正在开发为单页应用程序 - 并考虑到这一点 - 希望在 URL 中包含一个锚标记,以便用户看到带有验证消息的表单。

但是,如果我使用 CurrentUmbracoPage() - 验证有效并保持模型状态 - 但我找不到添加锚标记的方法。如果我使用 RedirectResult,我会失去我的模型状态!

目前,如果表单验证失败 - 页面会重新加载,但会将用户带到页面顶部。

有什么帮助吗?我的表单发布和获取操作如下:

    public ActionResult GetQuestionForm()
    {
        // Controller code omitted
        return PartialView("_AskAQuestionForm", model);
    }

    [HttpPost]
    public ActionResult ProcessQuestionForm(QuestionForm model)
    {
        if (!ModelState.IsValid)
        {
            if (TempData.ContainsKey(QUESTION_FORM_TEMP_DATA_KEY))
                TempData.Remove(QUESTION_FORM_TEMP_DATA_KEY);

            TempData[QUESTION_FORM_TEMP_DATA_KEY] = model;

            // I need to add #js-ask-question__answers to this but can't :(
            return CurrentUmbracoPage();
        }

        return Redirect(Umbraco.AssignedContentItem.Url + "?qf=y#js-ask-question__answers");
    }
4

1 回答 1

0

事实证明,如果您将模型放入临时数据中,您可以在 GET 操作中检索它,然后重新验证它。这反过来又补充了 ModelState,并允许您改用 RedirectResult - 带有锚标签

于 2014-09-23T16:21:50.040 回答