나는 가격을 계산하기 위해 노력하고, 뭔가 같은 :@helper에 함수를 넣을 때 Null 참조 - 어디에 넣을 수 있습니까? 아니면 어떻게 처리 할 수 있습니까?
이@{
Model.Prices.total =
((Input == choice) ? a : b)
+
((AnotherInput == anotherchoice) ? c : d)
;
}
이것은 .cshtml
보기 파일 내에서 잘 작동하지만, 불필요한 실제 코드는 LOT (나는 3을 적용 할 것을 말할 것도없고 더 이상 말을 그러한 다른 계산들).
그래서 나는 다음과 같이 호출 할 수 있도록 Pricing.cshtml
에 Calculate
라는 App_Code
에 @helper
파일 만들기의 생각에 도착 :
@Pricing.Calculate()
을 그러나 이것은이 "null 참조에 바인딩 런타임을 수행 할 수 없습니다 발생합니다 "오류.
나는 오류가 발생하며 그 한계가 있습니다. 아무도 내가 이것을 성취 할 수있는 방법을 제안 할 수 있습니까? 나는 클래스 파일에 대해 생각했지만 하나 (더 나은 대안이라면)로 변환하는 방법을 모른다. 코드 샘플은 매우 높이 평가됩니다.
업데이트 : 내가 연구 한 다른 옵션으로 변환 할 수없는이기 때문에 내가보기에 일시적으로이 계산을 배치했다 :
App_Code
파일에@helper
기능 -을하지만이있다 내가 만난 "null 참조"오류가 발생했습니다..cs
클래스 파일 (또는 어쩌면 그냥 내 뷰 모델에 추가 -하지만 난 코딩 권리를 얻을 수- 제안을 컨트롤러에 넣어 -.하지만 코드가 긴입니다
-
사용자 정의 만들기. HTML을 도우미 시도하고 ([매개 변수?], [매개 변수?])`@ Html.Calculate과 같이 호출하는 클래스 -.하지만 나를 위해 그 # 2보다 조금 더 복잡은 - 정식 의견을 언급
. 다시 한 번 말하지만 내가 제공 한 예제는 단순한 것입니다. 여러 가지 옵션으로 각각을 탐색 할 수있는 30 가지 이상의 조건이 있습니다 (a
's 및 b
'의 예를 들어 위의), 그리고 그들 중 일부는 더 복잡해 :
() ? a :() ? b : c +() ? d :() ? e :() ? f : g + ....
을 그리고 나는 그것이 자신의 .cs
파일 중 하나 (C# 코드를 이동하는 경우, 사용자 정의 HTML을 도우미 또는 뷰 모델에) 내가 잘못하려고하는 것은 모두 선언입니다.
당신에게 문제가있는 것은 실제 계산이 아닙니다. 위의 스 니펫이 계산을 수행하기 위해 작동합니다. 나는 위에 열거 된 적절한 옵션을 얻기 위해 고심하고있다.
내가 자신의 클래스에이 변환 문제가 많이 데 2
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