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 に答える