2015-10-06 52 views
0

我們使用Post/Redirect/Get方法,並且通常爲我們的每個操作創建一個特定的ViewModel,但是ReturnUrl一直在困擾着我。什麼是堅持ReturnUrl的首選方法?你應該在MVC中的viewbag或viewmodel存儲returnurl?

  1. 它添加到ViewBag - 然後與此例如重定向

    if (!ModelState.IsValid) 
    { 
        return RedirectToAction("login", new { ReturnUrl = returnUrl }); 
    } 
    

或者

  • 存儲它在視圖模型和輸出一個隱藏字段的值在?當我們使用ModelStateToTempData時,它會傳遞這個值,而不需要額外考慮。
  • 我問的唯一原因是因爲默認微軟模板有使用ViewBag在使用的ViewModels

    行動它
    +0

    ViewModel毫無疑問。爲什麼?因爲這是需要的視圖和強類型的信息 - 比混淆泛型ViewBag屬性更容易。加上額外的好處,因爲我說的是,它的強類型和在你的viewmodel,所以你可以使用剃刀語法來訪問它 –

    +0

    這是有趣的艾哈邁德,我問的唯一原因是因爲默認的微軟模板使用ViewBag - with ViewModels – Tim

    +0

    當然,但他們是初學者/基本模板。最終它並不重要,但是採用強類型的方法對我和其他許多人來說總是最終贏得勝利。 :) –

    回答

    1

    你可以將其存儲在這兩個,但問題是應該嗎?

    我想說這取決於你的項目的複雜性,有多少人會消耗你的代碼並擴展它?

    另一個角度是概念 - 你的模型是否真實地封裝了ReturnUrl,或者你會將它標記爲ReturnUrl,'只是因爲'?

    如果後者是這種情況,那麼我會使用ViewBag。

    相關問題