2017-02-10 174 views
0

我對C#ViewData有點問題。在視圖之間共享數據

在第一種觀點,我打電話:

@Html.EditorFor(m => m.IndividualModel, "_Individual", 
        new ViewDataDictionary { { "processType", "ABC" } }) 

而在第二個我想將這個值變量是這樣的:

var processType = ViewData["processType"]; 

但是,從processType字典總是空。

請問,你有什麼想法是什麼錯?

+0

你是如何定義processtype,你如何從控制器發送?嘗試進行空檢查並僅在ViewData [「processType」「]不爲null時分配var processtype –

回答

-1

您可以使用下面的例子,並在文件中Put和運行程序瞭解後,如何將數據傳遞控制器和視圖之間使用的ViewData ++

// Put In C# Controller File 

List<string> petList = new List<string>(); 
petList.Add("Dog"); 
petList.Add("Cat"); 
petList.Add("Hamster"); 
petList.Add("Parrot"); 
petList.Add("Gold fish"); 
petList.Add("Mountain lion"); 
petList.Add("Elephant"); 

ViewData["Pets"] = new SelectList(petList); 

@將在控制研究創建視圖文件 @

<h2><%= Html.Encode(ViewData["Message"]) %></h2> 
<br /><br /> 
<% using(Html.BeginForm("HandleForm", "Home")) %> 
<% { %> 
    Enter your name: <%= Html.TextBox("name") %> 
    <br /><br /> 
    Select your favorite color:<br /> 
    <%= Html.RadioButton("favColor", "Blue", true) %> Blue <br /> 
    <%= Html.RadioButton("favColor", "Purple", false)%> Purple <br /> 
    <%= Html.RadioButton("favColor", "Red", false)%> Red <br /> 
    <%= Html.RadioButton("favColor", "Orange", false)%> Orange <br /> 
    <%= Html.RadioButton("favColor", "Yellow", false)%> Yellow <br /> 
    <%= Html.RadioButton("favColor", "Brown", false)%> Brown <br /> 
    <%= Html.RadioButton("favColor", "Green", false)%> Green 
    <br /><br /> 
    <%= Html.CheckBox("bookType") %> I read more fiction than non-fiction.   <br /> 
    <br /><br /> 
    My favorite pet: <%= Html.DropDownList("pets") %> 
    <br /><br /> 
    <input type="submit" value="Submit" /> 
<% } %> 

謝謝。

+1

這是一個好例子,但它並沒有真正回答問題 – Ben

+0

嗨,非常感謝,我將嘗試它 – Marek

+0

這與這個問題有什麼關係 –

0

您使用的EditorFor()this overload,其中第三個參數(additionalViewData)是typeof運算object,不typeof運算ViewDataDictionary。從文檔(我的重點)

additionalViewData
類型:System.Object的
一位不願具名的對象,可以包含將合併到的ViewDataDictionary < TModel的附加視圖數據>實例被創建爲模板。

更改方法

@Html.EditorFor(m => m.IndividualModel, "_Individual", new { processType = "ABC" }) 

,並在模板

@{ var processType = ViewData["processType"]; } 
<div>@processType</div> // renders "ABC"