3

だから、私は小さな問題を抱えており、次の方法でそれを解決する可能性があるかどうかを知りたい.このような:

私は ajax 呼び出し、GET を持っています。この ajax 呼び出しでは、(javascript を介して) ユーザー入力に基づいていくつかのパラメーターを渡し、残りをコントローラー アクションに処理させたいだけです。問題は、ajax を使用すると、アクションが完了した後に何が起こっても成功関数が処理することです。

アクション (いくつかのパラメーターを含むビューを返す ActionResult) にリダイレクトがあります。コントローラーがここにリダイレクトできるようにしたいのですが、Ajax が Success 関数で開始されます。

リダイレクトするために、フルパス (ユーザー入力に基づいているため変更される可能性があります) を成功関数に渡すにはどうすればよいですか?

ありがとうございました!

 public string Edit(string stringEventID)
    {
        Guid eventID = new Guid(stringEventID);

        if (eventID == Guid.Empty || eventID == null)
        {
            return Url.Action("Edit", "MyController", new { area = "MyArea", id = new Event() });
        }

        else
        {
            Event _event = _iEMARepository.Events.Where(p => p.EventID == eventID).SingleOrDefault();

            return Url.Action("Edit", "MyController", new { area = "MyArea", id = _event })
        }
    }
4

1 に答える 1

4

Url ヘルパーを使用して、MVC とルートの URL を適切に構築します。次にJsonresult、URL を含む を返します (AllowGet を設定する必要がある場合があります)。

string url = Url.Action(your arguments here);

return new JsonResult()
{
    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
    Data = new Dictionary<string,string>() { { "url", url } }
};

URL in success 関数を使用してリダイレクトをトリガーするよりも、次のようにします。

success: function (data) {
    window.location.href = JSON.parse(data)['url'];
}
于 2013-08-20T18:31:18.607 に答える