存储稍后将用于重定向到操作的URL

时间:2014-07-16 12:31:27

标签: c# asp.net-mvc redirect

我有一个观点,可以作为许多行动的共同点。我希望能够重定向到它,然后在几个动作之后发送回原始动作。按照我的例子,你了解我的意思。

当我调用此视图时,我会使用以下行:

return RedirectToAction("SearchItemsToAdd", new {@_currentUrl = Request.Url});

我认为将url作为参数传递将允许我发送回动作,但我还需要项目的ID。,我没有Request.Url。

因此,_currentUrl字符串在视图中传播,当用户点击back按钮时,我希望能够重定向到原始操作并传递项目的ID那是用过的。

到目前为止,我已经这样做了:

if (!String.IsNullOrEmpty(_currentUrl))
{
    if (Url.IsLocalUrl(_currentUrl) && _currentUrl.Length > 1 &&
    _currentUrl.StartsWith("/") &&
    !_currentUrl.StartsWith("//") &&
    !_currentUrl.StartsWith("/\\"))
    {
        return Redirect(currentUrl);
    }
}

但它不起作用,因为我没有该项目的ID。例如,这里是控制器动作,它启动呼叫并且我希望以后能够重定向:

public ActionResult EditPack(int? _packID, PackInfo _packToEdit, string _submitButton)
{
    if (Request.HttpMethod == "GET")
    {
        if (_packID == null)
        {
            TempData[MessageDomain.Tags.TEMPDATA_MESSAGE_ERROR] = MessageDomain.ID_PROBLEM;

            return RedirectToAction("DisplayListPacksToManage");
        }

        if (_packID == 0)
        {
            TempData[MessageDomain.Tags.TEMPDATA_MESSAGE_ERROR] = MessageDomain.ID_PROBLEM;

            return RedirectToAction("DisplayListPacksToManage");
        }

        PackInfo pack = mPackManager.GetPackByID((int)_packID);

        pack.mDateModified = DateTime.Now;

        return View(pack);    
    }

    if (_submitButton == "Details")
    {
        return RedirectToAction("ViewPackDetails", new {@_packID = _packToEdit.mPackID});
    }

    if (_submitButton == "Delete")
    {
        return RedirectToAction("DeletePack", new {@_packID = _packToEdit.mPackID});
    }

    if (_submitButton == "Add Cards")
    {
        _packToEdit = mPackManager.RefreshPack(_packToEdit);

        _packToEdit.UpdateStatus();

        Session[PACK_CREATION_ITEM] = _packToEdit;

        return RedirectToAction("SearchItemsToAdd", new {@_currentUrl = Request.Url.AbsolutePath});
    }

    _packToEdit = mPackManager.RefreshPack(_packToEdit);

    _packToEdit.UpdateStatus();

    return View(_packToEdit);
}

因此,当我的用户完成他的工作并想要返回编辑时,我希望能够调用Edit控制器操作并传递参数。我怎么能这样做?

0 个答案:

没有答案