我想計算的價格,是這樣的:將函數放入@helper時爲空引用 - 我可以在哪放置它或如何處理它?
@{
Model.Prices.total =
((Input == choice) ? a : b)
+
((AnotherInput == anotherchoice) ? c : d)
;
}
這行之有效的.cshtml
視圖文件中,但不用說實際的代碼是很長時間(更不用提,我想申請3這種不同的計算)。
所以我開始做一個@helper
文件App_Code
在Pricing.cshtml
所謂Calculate
,我可以把它像這樣的思路:
@Pricing.Calculate()
但是,這將拋出一個「不能爲空引用執行運行時綁定「錯誤。
我得到的錯誤,我得到這是一個限制。任何人都可以建議我如何去完成這個?我想到了一個類文件,但不知道如何將它轉換爲一個類(如果這是一個更好的選擇)。代碼示例非常感謝。
UPDATE: 我暫時把這個計算的觀點,因爲我無法將其轉換爲我研究過其他的選擇:
- 在
App_Code
文件的@helper
功能 - 但這是我遇到的「空引用」錯誤。 - 一個
.cs
類文件(或者只是把它添加到我的視圖模型 - 但我不能得到編碼權 - 的建議,把它的控制器 - 但代碼冗長
-
創建自定義。 HTML輔助類來嘗試並調用它像`@ Html.Calculate([參數?],[參數]) - 。但對我來說這是更復雜一點比#2- 評適當注意
。再一次請注意,我提供的例子是一個簡單的例子,我有30多個條件來探索每個選項(a
的和b
的上面,例如),其中有些變得更加複雜:
() ? a :() ? b : c +() ? d :() ? e :() ? f : g + ....
如果我去的C#代碼(無論是在它自己的.cs
文件,自定義HTML輔助或視圖模型)這是所有我將會弄錯的聲明。
請注意,這不是我遇到問題時的實際計算。上面的代碼片段直接用來執行我的計算。 我只是努力使它達到我上面列出的適當選項。
我有很多的麻煩此轉換成它自己的類UPDATE(我不是一個程序員 - 對不起,不理解)。這是我在視圖功能的一部分(只是一個片段,希望我能找出休息,如果你提供一個代碼示例):
@{
Model.Price.calculated
=
//below is the "base" price, all else would be "add-ons"
Model.Price.priceOne //elsewhere would be priceTwo, etc.
+
((Model.MyModelOne.MyRadioButtonOne ==
MyModelOne.RB1Enum.RB1ChoiceOne)
?
Model.Price.AddOnOne
:
(Model.MyModelOne.MyRadioButtonOne ==
MyModelOne.RB1Enum.RB1ChoiceTwo)
?
Model.Price.AddOnTwo
:
Model.Price.AddOnThree)
+
((Model.MyModelTwo.MyRadioButtonTwo
== MyModelTwo.RB2Enum.RB2ChoiceOne)
?
Model.Price.AddOnFour
:
(Model.MyModelTwo.MyRadioButtonTwo
== MyModelTwo.RB2Enum.RB2ChoiceTwo)
?
Model.Price.AddOnFive
:
Model.Price.AddOnSix)
;
}
不要胸圍我的球使用enums
。 :)
同樣,雖然計算不適合在視圖中執行,但上述工作 - 我根據用戶選擇得到計算結果。
我Price.cs
模型(再次,只是讓你的想法基本的東西):
public class Price
{
//Leaving out [DataType] and [DisplayFormat] DataAnnotations
// leaving out priceTwo, etc.
// numbers are basic for simplicity
public decimal calculated { get; set; }
public decimal priceOne { get { return 100; } }
public decimal AddOnTwo { get { return 10; } }
public decimal AddOnThree { get { return 20; } }
public decimal AddOnFour { get { return 30; } }
public decimal AddOnFive { get { return 40; } }
public decimal AddOnSix { get { return 50; } }
// Others go here
}
執行計算以設置模型聽起來像不屬於視圖的東西。你有需要它的原因嗎? – DMulligan
不,我希望它在一個單獨的文件中,就像'App_Code'中的函數/幫助器一樣。我想過創建一個班,但不知道如何。 – REMESQ
我認爲@AFinkelstein的意思是這個邏輯應該在你的控制器上。 – ivowiblo