2013-11-20 69 views
3

我知道這是一個愚蠢的問題,但裸露在我身邊,請即時相當新。如何從視圖中的viewBag爲模型分配一個值

我在我的模型稱爲的ExtraValue一個字符串屬性,並在視圖我有一個ViewBag與價值,我想要分配的價值在viewbag示範財產(的ExtraValue)

我想:

@{Model.extraValue = ViewBag.id} 

我在得到的ExtraValue一個值,即時通訊相當肯定ViewBag.id持有數量。

有什麼想法嗎?

+0

請查看我的答案。我更新 –

回答

5

當您發佈它時,您無法從ViewBag中獲取該值。

ViewBag被desiged把一些有用的數據和accessible at rendering view only

如果您要訪問,那麼你需要使用一些隱藏域視圖保存。

@{Model.extraValue = ViewBag.id} 

@Html.HiddenFor(m=>m.extraValue). 

現在你可以能夠得到的ExtraValue控制器,因爲你回發與HiddenField

public ActionResult Save(Model model) 
{ 
    var extra=model.extraValue;// this will bring your viewbag id assigned 
} 
+0

是的,它的工作,感謝很多花花公子 – user2962142

+0

@ user2962142,不客氣 –

+0

雖然這個工程,它沒有多大意義。如果你可以在'ViewBag'中設置一個值,那麼你可以直接在模型本身上直接設置它,否則就無需使用ViewBag。如果您的困惑是在渲染時間之前沒有模型實例(通過執行'返回View()'),您實際上可以將模型實例傳遞給View(),即var model = new Something {extraValue = 1} ; return View(model);' –

0

您很可能在操作方法中設置ViewBag值。喜歡的東西:

ViewBag.id = idValue; 

您還傳遞了一個模型來查看:

return View(myModel) 

我建議你設置extraValue屬性控制器,而不是在視圖:

myModel = idValue; 
return View(myModel); 
+0

我不能這樣做,因爲該方法使用不同的模型 – user2962142

0

的幫助下,你可以通過使用隱藏式輸入將其'name'屬性設置爲Model變量以獲取post方法的值。

<input type="hidden" name="extraValue" value="@ViewBag.id"/> 
相關問題