知道RedirectToAction
,我在尋找類似的東西來保持用戶的URL穩定,並將責任從一個動作傳遞到另一個動作。有沒有像「RewriteToAction」?
因爲我發現zero Google results在這個話題上,我不妨完全嘗試解決XY problem。
不過,我會嘗試解釋爲什麼我認爲有可能是一個需要這一點。
場景:
public ActionResult A(int id)
{
var uniqueID = CalculateUniqueFromId(id);
// This compiles.
return RedirectToAction("B", new { uniqueID });
// This does not compile.
return RewriteToAction("B", new { uniqueID });
}
public ActionResult B(Guid uniqueID)
{
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
在上面的代碼中,動作A計算從一個整數一個GUID並將其傳遞到另一個動作。
解決方法:
我可以在上面的代碼更改爲類似這樣:
public ActionResult A(int id)
{
var uniqueID = CalculateUniqueFromId(id);
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
public ActionResult B(Guid uniqueID)
{
var model = DoCreateModelForUnique(uniqueID);
return View("B", model);
}
這將正常工作。
不過,在更復雜的情況,我很想有一個「服務器端重定向」(又名重寫)現在,然後利用一切。
替代的解決方法:
我還可以使用HttpContext.RewritePath
,例如在Global.asax的Application_BeginRequest
裏面做一個重寫。
這種感覺對我來說「走出MVC上下文」,即使它按預期工作。
我的問題:
有沒有做這樣的事情RewriteToAction
的優雅,MVC集成的方法是什麼?
更新1:
Luke commented一個有前途的鏈接:
我會盡力調查,這是否符合我的需要。
我不認爲這會滿足您的要求? http://stackoverflow.com/a/1180744/894792或http://stackoverflow.com/a/1242525/894792 – Luke
這看起來非常有前途,@Luke,我就來看看,非常感謝。 –
祝你好運我的朋友! :o) – Luke