2012-11-14 64 views
1

當前在使用剃鬚刀的mvc上工作,希望將我的會話值分配給模型,我可以知道它是如何完成的?做了一些研究,但沒有看到任何。將會話值分配到razor @ html.displayfor

顯示,申請密碼恢復學生的ID,並且爲了節省studentId在會議上進行進一步的處理和顯示的密碼恢復表單 鑑於

  @Html.LabelFor(m => m.StudentId) 
      @Html.DisplayFor(m=> m.StudentId) 

當我想要指派我的會議成m.StudentId,反正有反正可以解決嗎?

在控制器

Session["StudentId"] = passwordrecovery.StudentId; 

回答

1

如果我理解你的權利,最好的辦法可能會是您返回視圖之前,而不是保持值來創建一個視圖模型,併爲其分配的StudentId在行動在會議中。然後,您將視圖模型傳遞給視圖,並在創建表單時訪問視圖中的StudentId。

// Create a view model that fit your needs 
public class PasswordRecoveryViewModel { 
    public int StudentId { get; set; } 
    // Other properties as needed 
} 

// Do something like this in your action 
public ActionResult YourAction() { 
    var model = new PasswordRecoveryViewModel { 
     StudentId = 1; // Assign the ID as needed 
    }  
    return View(model); 
} 

然後在您的視圖的頂部添加此:

@Model YourNameSpace.PasswordRecoveryViewModel; 

然後,您將有@Html.LabelFor(m => m.StudentId)

+0

是的,我確實創建了viewmodel,請讓我知道如果我的概念是不好的做法或不,對於我創建的viewmodel如學生,其中包含studentid,密碼,電子郵件等是我需要創建每個模型如logonmodel,passwordrecoverymodel等,但大多數都包含相同的屬性..在更改視圖(密碼恢復),其中驗證ID和電子郵件,並希望將ID傳遞到另一個視圖(setnewpassword),並顯示ID和讓用戶使用學生模型鍵入新密碼..真的非常感謝您的解釋.. – willie

+0

哇感謝您使用var model = new PasswordRecoveryViewModel { StudentId =「1」; //根據需要分配ID } – willie

+0

我相信我可以只分配studentid與會話..非常感謝你 – willie

1

訪問您的學生證,你並不需要保存在會話ID 。使用內置的成員資格提供程序功能來管理用戶帳戶。

除此之外,我會建議將任何/視圖所需的所有東西加載到viewbag中,而不要依賴其他外部數據源。這可以使用ActionFilters將值從源(如Sesssion)中提取出來並放入ViewBag或View Model中。

+0

感謝您的答覆,目前有一些疑問*非常抱歉是會員資格只適用於用戶表內置內置數據庫?這對我來說很新鮮......因爲我爲學生和員工創建了我的桌子,所以不太確定是否可以使用成員資格提供程序來修改我的自定義學生和工作人員表。 – willie

+0

研究通用會員供應商。你應該能夠使你的模型適應提供者來提供你自己的實現,而不需要會員特定的表格。 –

+0

感謝@jason Meckley準則..感謝您的幫助:) – willie