2012-10-17 28 views
1

我有一個參數,我傳遞一個URL。當用戶點擊url時,他們將被帶到該網站,允許他們輸入更多信息。 (密碼重置)我需要將我通過的令牌作爲url的一部分,並將其放入我提交給另一個控制器的模型中,該控制器驗證令牌和密碼,並在驗證後重置密碼。我無法弄清楚如何獲取模型中傳遞的參數。ASP.NET MVC4拉出參數的URL和發送隱藏的形式值

我的控制器:

[AllowAnonymous] 
public ActionResult TokenPasswordReset(string token) 
{ 
    return View(); 
} 

我的網址我產生是

http://localhost:53272/Account/TokenPasswordReset?wzBXjkT1Y8qmWIECwSIFYQ2 

在我看來,我嘗試設置與隱藏模型值。

<fieldset> 
     <legend>Reset Password Form</legend> 
     <ol> 
      <li> 
       @Html.LabelFor(m => m.NewPassword) 
       @Html.PasswordFor(m => m.NewPassword) 
      </li> 
      <li> 
       @Html.LabelFor(m => m.ConfirmPassword) 
       @Html.PasswordFor(m => m.ConfirmPassword) 
      </li> 
     </ol> 
     @Html.HiddenFor(model.UserToken = Request.Params["token"]) 
     <input type="submit" value="TokenPasswordReset" /> 
    </fieldset> 

密碼和確認密碼都沒問題。我無法弄清楚如何將標記拉出url並將其放入model.UserToken中。當我這樣做,我得到的是說

名「模範」的錯誤不會在當前的背景下存在

編輯:當我更改爲模型,建議如下,我得到一個新的錯誤。出於某種原因,它不會在隱藏的模型中選擇模型。

回答

1

感謝@Mystere人與@MVCKarl。我能夠解答他們的答案並解決我的問題。 MVCKarls解決方案似乎可以工作,我只是不想使用ViewData。我生成的網址是這個。

http://localhost:53272/Account/TokenPasswordReset?Token=LW6lnVrdUXemBMYqluAbMA2 

在我看來,我改變了隱藏字段。

@Html.Hidden("UserToken", Request.Params["token"]) 

這使我可以將它提交給我的控制器只有通過模型,我只需要驗證模型。

再次感謝...

2

詳細信息:將您的令牌添加到ViewData中,以便您可以在視圖中訪問它。

解決方案:

在控制器

[AllowAnonymous] 
public ActionResult TokenPasswordReset(string token) 
{ 
    ViewData["Token"] = token; 

    return View(); 
} 

在你看來

@Html.Hidden("Token", ViewData["Token"]) 

更新完成問題

在你的寶st方法

[HttpPost] 
public ActionResult TokenPasswordReset(YourModel yourModel, string Token) 
{ 
    yourModel.Token = Token; 
    rest of your code.... 
} 
+0

從技術上講,這解決了他遇到的問題,但並不能真正解決他的完整問題。 –

+0

已更新,以解決完整問題。 – MVCKarl

+0

使用ViewData將數據傳遞到視圖然後傳遞到其他控制器可以嗎?我閱讀了幾篇文章,說不使用它,所以我通常只用它來表示並不重要的消息。 – Xaxum

2

這是Model而不是model

但是,即使如此,它仍然無法正常工作。注意你的url沒有令牌查詢字符串?它只是?亂碼而不是?令牌=亂碼。

另外,如果你希望把它作爲一個模型項,必須爲它創建一個模型:

public class TokenModel { 
    public string Token {get;set;} 
} 

然後在你的控制器:

return View(new TokenModel() { Token = token }); 
+0

感謝您的回覆。我有我的模型設置。然而,當我使它成爲模型時,它說:「類型參數不能從用法中推斷出來,嘗試明確推斷 – Xaxum

+0

@Xaxum - 你在視圖的頂部添加了一個'@ model'聲明嗎? –

+0

是的。密碼就好了,如果我把標記放在同一個標​​籤和字段中,用戶可以輸入它就可以了,這只是Hiddenfor的問題,我現在正在測試Hidden,它似乎並沒有吐出來至少相同的編譯錯誤,一旦完成就更新,但可能會更新。 – Xaxum