2014-02-19 20 views
0

我真的很傻,問這個問題,確定我錯過了一些非常簡單的事情,但我無法讓它工作!我可以將viewdatadictionary(mymodel)傳遞給mvc視圖嗎?那麼如何訪問它?

我在控制器中創建一個的ViewDataDictionary這樣的:

public ActionResult Index() 
{ 
     var recipient = new Recipient() { 
      FullName = "John Brown", 
      Company = "FP", 
      Email = "[email protected]" 
     }; 
     ViewData = new ViewDataDictionary(recipient); 

     UserMailer.OnEventBook().Send(); 

     return View(); 
} 

但我不能工作,如何以訪問視圖中的數據。

我已經試過:

@ViewData["FullName"] 

@ViewData.recipient["FulName"] 

@ViewData[recipient.FullName] 

@Model.FullName 

@recipient.FullName 

...和一些類似的組合。任何人都可以指引我走向正確的方向嗎?

更新

我知道我可以只通過它通過使用ViewBag或計算機[「收件人」。但我很好奇這樣做的方式。

以下是來自docs for MvcMailer,編寫它的人似乎知道他的東西,所以我認爲它必須是傳遞數據的有效方式。

var comment = new Comment {From = me, To = you, Message = "Great Work!"}; 
ViewData = new ViewDataDictionary(comment); 

更新2

衛生署,我聽錯了。

MvcMailer調用動作中的動作,我應該在子動作(上面的代碼中的OnEventBook())中設置ViewData。

回答

3

首先改變控制器代碼:

var recipient = new Recipient() { 
    FullName = "John Brown", 
    Company = "FP", 
    Email = "[email protected]" 
}; 
ViewData["Recipient"] = recipient; 

然後在您查看使用下面的代碼:如果你想使用一個特定的對象來查看使用強烈

@((Recipient)ViewData["Recipient"]).FullName 

不管怎麼說型視圖。

更新

如果你仍然想使用的ViewDataDictionary你應該使用下面的代碼來訪問您的視圖模型:

@ViewData.Model.FullName 
+0

感謝您抽出寶貴時間來回答。是否有可能以另一種方式做到這一點?只是要更新一些細節的問題。 –

+0

檢查我的答案更新。 – ssimeonov

+0

'@ ViewData.Model。FullName'給我一個空引用異常的運行時綁定。如果我在視圖中添加一個'@ model'指令,我會得到一個標準的空引用exp。但我不需要,因爲它作爲ViewData傳遞,是嗎? –

2

你可以從轉讓方的數據爲「模型」控制器向視圖
控制器:

public ActionResult Index() 
{ 

    var recipient = new Recipient() 
    { 
     FullName = "John Brown", 
     Company = "FP", 
     Email = "[email protected]" 
    }; 


return view(recipient); //return the recipient as obj model 
} 

瀏覽次數:

@model YourNameSpace.YourRecipientModelFolder.Recipient 
@{ 
    ViewBag.Title = "Home Index"; 
} 
<div>Model:</div> 
<div>@Model.FullName</div> 
<div>@Model.Company</div> 
<div>@Model.Email</div> 

注:YourNameSpace.YourRecipientModelFolder.Recipient是這樣MyMVC.Models.Recipient

+0

感謝您的時間來回答。對不起,我在問題的原始版本中不太清楚,我想知道我發佈的方式是否有效,以及如何訪問它。 –

相關問題