4

jQuery를 사용하는 조건에 따라 조건부 콘텐츠가 있습니다. 양식 요소에서이 부분을 포함하거나 제외합니다. 여기 ASP.NET MVC 3.0 눈에 띄지 않는 데이터 유효성 검사 속성이있는 양식의 내부 및 외부 부분

내 기능입니다 :

function MoveInsideForm(id) { 
     $("#" + id).insertAfter("#myForm") 
    } 

function MoveOutsideForm() { 
     $("#myPartial1").insertAfter("#element-outside-from"); 
     $("#myPartial2").insertAfter("##element-outside-from"); 
    } 

문제는 insertAfter()으로는 내가 그

<input data-val="true" data-val-required="*" id="MyInput" name="MyInput" type="text" value="" class="input-validation-error"/> 

같은 요소가 HTML 5 사용자 정의 예를 들어

속성 복사하기하지 않습니다이다 그러나 insertAfter() 복사 :

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

insertAfter()에 HTML 5 속성도 복사 할 수있는 방법이 있습니까? jQuery 버전은 1.6.1입니다.

UPDATE : 의견

고마워. 여기에 양식 내 안쪽 부분을 렌더링 할 때 눈에 띄지 않는 데이터 속성을 사용하여 입력이 생성되지만 양식 외부에서 부분 데이터를 렌더링하는 경우 눈에 거슬리지 않는 데이터 특성이 처음에는 입력에 포함되지 않습니다.

그래서 양식 외부의 부분을 렌더링 할 때 처음에는 데이터 특성이 포함되지 않습니다. 그래서 jQuery insertAfter()에는 문제가되지 않습니다. 눈에 거슬리는 데이터 검증 속성 생성의 본질입니까?

+0

나는 당신의 코드 (http://jsfiddle.net/katsuke/sX67h/)의 일부를 프로토 타이핑했고 그것은 특별한 속성을 유지하는 것으로 보인다. 코드를 검토하고 누락 된 부분이 있는지 알려주십시오. (이것은 JQuery 1.6과 함께 사용되었습니다.) – Katsuke

+0

@Katsuke 데이터 속성을 복사하려면 데이터 (http://api.jquery.com/data/)를 사용하는 것이 더 좋지만 데이터 속성을 비롯한 모든 것을 이동하는 방법은 궁금합니다. insertAfter(). –

+0

Vasya. 난 그냥이 피들 http://jsfiddle.net/geertvdc/mVXSQ/ 코드를 테스트하고 사용자 지정 특성을 포함한 모든 특성을 복사하지 않습니다 (IE9에서 테스트 해요) – GeertvdC

답변

6

눈에 거슬리지 않는 유효성 검사를 생성하려면 MVC에 FormContext이 있어야합니다. Html.BeginForm 또는 Ajax.BeginForm 외부에 HtmlHelper를 배치하면 FormContext를 수동으로 인스턴스화하지 않으면 HtmlHelpers에 눈에 띄지 않는 유효성 검사 특성이 적용되지 않습니다. 당신이 BeginForm (전에 도우미를 배치하는 경우)

this.ViewContext.FormContext = new FormContext(); 

당신의 헬퍼 후 양식을 시작하기 전에 FormContext을 취소하십시오 : 당신은 수동으로 헬퍼 앞에 다음 코드를 삽입하여 FormContext을 인스턴스화 할 수 있습니다.

+0

PartialView를 통해 양식 필드를 동적으로로드하고 있습니다. 부분 뷰에서 위의 코드를 사용하여 부작용이 있습니까? –

+1

@Nick Olsen, 아니요. 'FormContext'가 존재하는지 확인하기위한 첫 번째 테스트 (예 :'if (this.ViewContext.FormContext == null) {...}')가 있으면 부정적인 영향은 없습니다. – counsellorben

+1

@counsellorben : 좋은 답변은 ... 오늘이 문제로 인해 화를 냈습니다. – Jonathan

관련 문제