2013-07-09 12 views
2

내가 ASP.Net MVC 내 뷰 모델에서 일부 정보를 바탕으로 4이상한 행동

에 이상한 동작을 발생하고있어 데이터 - 속성, 정말 같은 몇 가지 조건 속성을 설정하기 위해 노력하고있어 : <input type="checkbox" [email protected](Model.IsPrimary ? "true" : null) checked="@(Model.Selected ? "checked" : null)" disabled="@(Model.Disabled ? "disabled" : null) />

이것은 checkeddisabled 속성에 대한 벌금과 멋쟁이 작동하지만, 어떤 이유로 그것은 항상 data-primary 속성을 렌더링 할 수 있습니다. Model.IsPrimary 올바른 data-primary="true"으로 이어질하지만, 빈 data-primary attribte에서 !Model.IsPrimary 결과 것입니다.

이것은 내 첫 번째 질문으로 연결됩니다. 이 이상한 행동의 원인은 무엇입니까? 데이터 속성을 사용하고 있기 때문입니까? 데이터 속성 내부의 대시입니까?

그 후, 나는 생각 "좋아, 확인, 즉 쉽게 해결할 수 있습니다"와 같은 내 코드를 수정 : <input type="checkbox" @(Model.IsPrimary ? "data-primary=\"true\"" : String.Empty) checked="@(Model.Selected ? "checked" : null)" disabled="@(Model.Disabled ? "disabled" : null) />

이것은 표시되는 내 data-primary 속성을 고정하지만, 어떻게 든 만들어 내 disabledchecked 속성이 나중에 비어 있습니다.

내 두 번째 질문은 지금이 문제의 원인은 무엇 입니까? 내가 말할 수있는 한 여기에는 내 코드에 구문 유사성이 없습니다. 사람이 면도칼이 방법을 역할을하는 이유에 대한 정보가있는 경우

, 응답하시기 바랍니다.

PS : 결국, 나는 예상대로 모든 행위를하고, 입력 요소의 끝에서 내 data-primary 속성을 배치하여 일을 "고정". 파일 HtmlMarkupParser.Block.cssource of Razor 2에서

답변

9

:

private void AttributePrefix(IEnumerable<HtmlSymbol> whitespace, IEnumerable<HtmlSymbol> nameSymbols) 
{ 
    // First, determine if this is a 'data-' attribute (since those can't use conditional attributes) 
    LocationTagged<string> name = nameSymbols.GetContent(Span.Start); 
    bool attributeCanBeConditional = !name.Value.StartsWith("data-", StringComparison.OrdinalIgnoreCase); 
    ... 
} 

그들이 이런 짓을 왜 몰라하지만 설계된 것처럼 보인다.