ViewData
을 사용하여 부분 뷰에 매개 변수를 전달하는 상황이 있는데 가끔 일 때 매개 변수가 전달 될 필요가 없습니다. 그 상황에서, 나는 단지 그것이 디폴트로 되돌아 가기를 원할 뿐이다."ViewData"내에서 논리적 "OR"을 사용하려고 시도
그래서 실제보기 은 일반적으로는 작동, 놀랍게도 ...
<div>
@Html.Partial("templates/form/slots", new ViewDataDictionary { { "slots", "First.Slots" } })
</div>
과 같은 모습을 렌더링되고 그 다음 부분
...<div class="form-group">
<h3>Slots</h3>
<!-- lots of other happy HTML -->
<select ng-model="@ViewData["slots"]"></select>
</div>
를 다음과 같이 보입니다 잘 됐네. 그러나 ||
구문으로 약간의 걸림돌이 있습니다. ViewData에 값을 지정하지 않으면 기본값 인 "Model.Slots"
으로 폴백하고 싶습니다. 나는 ... 그만큼 쉬울 것이다
<select ng-model="@(ViewData["slots"] || "Model.Slots")"></select>
생각하지만 그
'||'... 오류를 인용, 작동하지 않습니다 'object'및 'string'의 인스턴스에는 연산자를 적용 할 수 없습니다.
나는 가깝다는 것을 알고있다. 나는 면도기에 관한 정확한 문법으로 고심하고있다. 컨버팅없이 전체 크기의 확장 메서드를 사용하지 않고 이러한 종류의 식을 얻을 수있는 방법이 있습니까?
의 결과로'||'를 병합하는 null 연산자 '??'를 사용하거나 부울입니다. (두 피연산자 모두 호환 가능한 유형이어야하므로 객체를 형 변환 할 수 있습니다. 필요한). 그래서'viewdata [ "slots"] ?? "Model.Slots". 넌 캐스팅 할 필요가 없어. Coalescing null은 첫 번째 Null이 아닌 값을 선택합니다. – Charleh