你的URL與參數鏈接到一個GET操作,對不對?如果是這樣,請將參數名稱作爲varaible添加到該Action的聲明中。因此,例如,說我的網址通過電子郵件發送的是:
http://mywebsite.com/register?id=511&sl=department
然後我相應的行動是:
public ActionResult Register(int id, string sl)
{
MyModel myModel = new MyModel();
myModel.id = id;
myModel.sl = sl;
return View(myModel);
}
爲了保持過程中多步驟的過程,你可以使用這些Html.HiddenFor()在視圖中添加隱藏字段或保存到其他位置(即數據庫)。
如果你不希望將其添加到您的模型,那麼你可以這樣做:
public ActionResult Register(int id, string sl)
{
ViewData["id"] = id;
ViewData["sl"] = sl;
return View();
}
現在在視圖中有一個隱藏字段每個。然後在POST-to控制器操作中:
[HttpPost]
public ActionResult Register(MyModel myModel, int id, string sl)
{
// the hidden fields are now in id and sl
// ASSUMPTION: the names of "id" and "sl" don't exist in MyModel -- if they do, collision
...
return View();
}
問題是查詢字符串是在URL中編碼的。如果您不從URL導航(例如,通過重定向或設置JS中的URL),瀏覽器將「保持放置」該URL。因此,要「保留」查詢字符串參數,直到您發佈在同一頁面(URL)上,您不必做任何特別的事情!關於如何訪問這些查詢字符串參數已經有很多很好的答案,並且對於初始GET和以下POST操作同樣適用。 –