我有一个观点,可以作为许多行动的共同点。我希望能够重定向到它,然后在几个动作之后发送回原始动作。按照我的例子,你了解我的意思。
当我调用此视图时,我会使用以下行:
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
控制器操作并传递参数。我怎么能这样做?