2012-09-07 97 views
0

在我的行動之一,我已經得到了這一點:如何將值傳遞給一個強類型的視圖ASP MVC剃刀

ViewBag.Val = "a val"; 
View(); 

相關的觀點:

@{ 
    Model.Attr = ViewBag.Val; 
} 

異常詳細信息:

System.NullReferenceException: Object reference not set to an instance of an object. 

...

Line 27: Model.Attr = ViewBag.Val; 

這是真正的問題,如果它是如何將值傳遞給視圖並將模型屬性設置爲該值。

編輯:

我loged執行,分配工作正常:

取得動作:

var Obj = MyModel(); 
Obj.Attr = 123; 
return View(Obj); 

觀點:

<p>@Model.Attr</p> // shows 123 

但後收到MyModel的動作,MyModel.Atrr爲0.

爲什麼會發生這種情況以及如何解決問題。

編輯2

視圖被綁定到模型是預期的交動作來procesed模型並是,我想在視圖或前一分配的值的模型(得到)行動。我只想從'get action'傳遞一個值'a'來查看,賦值'model.a'='a',然後在'post action'上處理'model'(帶有'a') 。

我可以從日誌中看出,綁定到視圖的模型和從'get action'傳遞給視圖的模型是不同的實例。

+0

你的模型是什麼?在視圖內觸摸模型是否有意義? –

+0

只有幾個值。 – loki

回答

1

您沒有傳遞對象到視圖,所以Model爲空,所以試圖寫入Attr屬性投擲。

通的東西在這裏:

ViewBag.Val = "a val"; 
View(new SomeModelTypeYadaYadaThatCorrespondsToTheView()); 

米哈爾Klouda的評論也是正確的,你要對這個錯誤的方式。您需要填充的值應在構建模型時完成,而不是在視圖渲染過程中。

+0

不,它是一個強類型的視圖,一些屬性必須來自控制器並且像帖子中那樣。我不好意思在標題中輸入了'強'的'靜態'。 – loki

+0

@ user1108631好吧,那麼我的原始響應是正確的 - 你需要傳遞一個模型對象到視圖。 – asawyer

+0

顯然它沒有被分配到視圖被鍵入的模型。 – loki

0

我認爲你可以將它添加到您的.cshtml文件(我不認爲你有它):

@model YourModelNameSpace.YourModel 

這會給你一個強類型的模型,不爲空。

+0

我已經擁有它了。 – loki

+0

@ user1108631那麼什麼是null,那麼?它是模型還是「val」? –

0

您需要返回查看您的Action方法並傳遞Model。

ViewBag.Val = "a val"; 
return View(YourModel); 
相關問題