0

SurfaceController から、現在のクエリ文字列をリダイレクト アクションに追加したいと考えています。これを行う適切な方法が見つからないようです。

フォームが送信されるページには、クエリ文字列を URL に追加することによって表示されるタブが含まれています。このタブからフォームが送信され、同じタブにお礼のメッセージが表示されるようにしたい。

クエリ文字列は #inquery です

私の表面コントローラーから:

[HttpPost]
public ActionResult HandleFormSubmit(InquiryFormModel model)
{
    if (!ModelState.IsValid)
    {
        return CurrentUmbracoPage();
    }

    // Mail date goes here...

    TempData["success"] = true;

    return RedirectToCurrentUmbracoPage();
}

ご想像のとおり、RedirectToCurrentUmbracoPage() メソッドによって返される URL に #inquery を追加する必要があります。

ありがとう!

4

1 に答える 1

0

現在のページを返す場所に、クエリ文字列を含む viewbag オブジェクトを追加します。このフィールドを HTML の隠し入力に保存し、クライアント側の JavaScript でテストして、存在する場合は URL に追加します。

if (!ModelState.IsValid)
{
    ViewBag.URLString = "stringhere"
    return CurrentUmbracoPage();
}

次に、HTMLで。

<input id="URLString" type="hidden" />

そしてあなたのjavascriptで(jQueryを使用している場合)

$(document).ready(function(){
    window.location.href += $("#URLString").val();
});

このコードは完全に修飾されていないため、そのままでは機能しませんが、アイデアを提供するためにさらに多くのコードがあります。

于 2013-09-15T17:53:27.550 に答える