2011-03-23 73 views
0

我有一個在線表格。例如它要求名字和姓氏。當他們提交時,我將它們發送到另一個視圖。這第二個視圖有幾個文本框(密碼,電子郵件地址,用戶名),但它也有名字和姓氏。如果他們填寫第一個表格並填寫名字/姓氏,我希望第二個表格顯示這些值,因爲他們已經填寫了。MVC3 Razor ViewData

第一種形式我將所有填寫的信息放入TempData [條目「]

第二種形式我正在做這個檢查。

 if (TempData["entry"] != null) 
     { 
      var _model = (AccountInformationModel)TempData["entry"]; 

      ViewData["_firstName"] = _model.NameFirst; 
      ViewData["_lastName"] = _model.NameLast; 
     } 

     return View("Register"); 

我想在我看來我有點困惑如何在文本框中顯示這些數據。我在我看來有這個,但它似乎沒有工作。

 <div class="editor-label"> 
      @Html.LabelFor(m => m.FirstName) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBox("FirstName", ViewData["FirstName"]) 
      @Html.ValidationMessageFor(m => m.FirstName) 
     </div> 

清楚這行...

@Html.TextBox("FirstName", ViewData["FirstName"]) 

不工作..

+0

只是好奇,爲什麼不把模型包含姓和名的實例傳遞給你的第二個視圖,然後使用'@ Html.TextBoxFor(m => m.FirstName)'? – 2011-03-23 19:37:06

+0

@adrift ...剛試過你的建議,它完美的作品..我喜歡這裏的兩個想法...但你的似乎利用mvc的想法很不錯...感謝您的建議! – gevjen 2011-03-23 20:16:51

回答

9

你指定的值設置爲 「_FirstName」

ViewData["_firstName"] = _model.NameFirst; 

然後嘗試顯示「名字」

@Html.TextBox("FirstName", ViewData["FirstName"]) 

嘗試將其更改爲:

@Html.TextBox("FirstName", ViewData["_firstName"]) 

另一種方式來做到這一點,以避免錯誤這樣是定義一個新的類,它包含所有視圖的數據項。這樣你的字符串被包含在一個位置,使維護和更改變得更加容易。

public static class ViewDataKeys 
{ 
    public const string FirstName = "_firstName"; 
} 

然後,當你要訪問它,你可以使用

ViewData[ViewDataKeys.FirstName] = _model.NameFirst; 
+0

布蘭登......謝謝..愚蠢的錯誤。很高興有另一套眼睛我猜,我在正確的軌道上。 – gevjen 2011-03-23 19:26:04

+0

@gevjen,沒問題。作爲一個附註,你可能想要考慮使用常量而不是字符串來避免這樣的錯誤。 – Brandon 2011-03-23 19:28:11

+0

@brandon ......從來沒有做過這件事,也沒有聽說過它,但是如果你有任何鏈接文獻請傳遞它,謝謝! – gevjen 2011-03-23 19:30:20