2017-12-08 1 views
0

이것은 웹 폼과 MVC 버전 5.2.3의 하이브리드 인 ASP.Net 웹 응용 프로그램입니다. 중첩 클래스의 속성에 대해 Html.EditorFor를 호출하면 입력은 "id"속성없이 렌더링됩니다. 어째서? 그리고 모델에서 "id"속성을 렌더링하도록 asp.net을 강제로 변경할 수있는 것이 있습니까?HTML.EditorFor는 ID가없는 중첩 클래스 속성을 렌더링합니다.

, "부모"내 모델은, "아이", 중첩 클래스가 포함되어보기에

public class Parent 
{ 
    public string ParentName {get;set;} 

    public class _Child 
    { 
     public string ChildName {get;set;} 
    } 

    public Child _Child {get;set;} 
} 

, 내가 Parent.ParentName이 Html.EditorFor를 (사용하여 렌더링), 그것과 렌더링 모두 " 이름 "및"ID " 즉, 나는 * .cshtml 파일이 넣을 때

<input id="ParentName" name="ParentName" type="text" value="" /> 

내가 Parent._Child.ChildName을 렌더링 할 때, 그것은없이 렌더링, 그러나 :

@Html.EditorFor(m => m.ParentName) 

그것은 다음과 같은 HTML이 렌더링 "Id"속성. 은 "ID"속성없이,

@Html.EditorFor(m => m._Child.ChildName) 

그것은 다음과 같은 HTML 렌더링 : 나는 * .cshtml 파일에 넣고 때 즉,

<input name="_Child.ChildName" type="text" value="" /> 

는 어떻게? 그리고 "id"생성을 강제로 모델화 할 수 있습니까? 새로운 HtmlAttributes를 사용하여 직접 추가 할 수 있다는 것을 알고 있습니다.

+0

id에 숨겨진 클래스로 입력을 생성하지 않는 이유는 무엇입니까? – saeed

+2

문자로 시작하는'_Child'를 변경 하시겠습니까? –

+0

감사합니다 @ MarkSchultheiss, 그게 실제로 문제가되었습니다. 답변에 대한 귀하의 의견을 바꾸시겠습니까? 그런 다음 그것을 선택하고 미래 세대를 안내 할 수 있습니다. –

답변

1

여기에는 문자로 시작해야하며 밑줄을 문자로 변경해야하며 OK이어야한다는 HTML 4 사양 https://www.w3.org/TR/html401/types.html#case-sensitive이 사용됩니다.

순전히 의견이지만 어쨌든 여기에 밑줄을 사용하지 않을 것입니다. 왜냐하면 입력하기가 더 어렵 기 때문입니다.

관련 문제