2011-03-31 3 views
0

내 문제는 다음과 같습니다 클래스 및 HtmlTextWriter 인스턴스가 있습니다. 이제보기와 같이 편집기를 생성하고 싶습니다. HtmlHelper가 있고 Editor, TextBox ... 메서드도 있습니다.HtmlHelper.EditorFor 컨트롤러에서

public class Class 
{ 
    public string Test { get; set; } 
} 

HtmlTextWriter writer = new HtmlTextWriter(new StringWriter()); 
Class a = new Class(); // 
a.Test = "Lorem ipsum"; 

어떻게하면 TextBox와 모든 유효성 검사 (DataAnnotations)를 얻을 수 있습니까?

writer.Write(HtmlHelper.Editor(x => ....).ToString()); 

좋은 하루 되세요!

답변

0

DataAnnotations 유효성 검사 (눈에 잘 띄지 않는 JS 사용)를 얻으려면 BeginForm 도우미를 사용할 때 만들어지는 FormContext가 필요합니다.

+0

이것은 사실이 아닙니다. 필요한 경우 FormContext를 수동으로 설정할 수 있습니다. if (Html.ViewContext.FormContext == null) { Html.ViewContext.FormContext = new FormContext(); }' – archil

+0

@archil 내가 말한 것은 * 사실 *입니다. 나는 당신이 BeginForm 도우미를 사용할 때 만들어 졌다고 말했다. 그것은 어떻게 사실이 아닌가? 나는 그에게 자기 자신을 세우라고 말하는 것에 대해 생각하지 않았고, 나는 그것이 현명한 일이라고 확신하지 못한다는 사실을 당신에게 말할 것입니다. – Linkgoron

+0

죄송합니다. BeginForm이 실행될 때 생성 된 것에 대해 당신이 옳았습니다. 수동으로 FormContext를 만드는 것은 ajax 호출을 통해 서버에서 부분 뷰를로드 할 필요가 있고 클라이언트에서 생성 된 exsiting 폼에 응답을 삽입하려는 경우에 유용합니다. 이 경우 FormContext를 수동으로 설정하지 않으면 유효성 검사는 입력으로 연결되지 않습니다 – archil

0

아마도이 질문에 대한 직접적인 대답은 아닙니다. 그러나 약간 다른 접근법을 사용하여 원하는 모든 것을 뷰에 넣은 다음 해당 뷰를 문자열로 렌더링 할 수 있습니다. 이 question을보세요. 뷰를 문자열로 렌더링하는 방법을 설명합니다.

+0

당신이 옳습니다. 내가 필요로하는 것이 아닙니다.) 아직도 고마워요. – dknaack

관련 문제