2011-10-03 4 views
1

렌더링 프로세스를 좀 더 제어해야하기 때문에 약간의 렌더링 프레임 워크를 사용하려고합니다. Fx. 속성을 탭에서 렌더링해야하는 경우눈에 잘 띄지 않는 유효성 검사로 사용자 지정 렌더링, 왜 작동하지 않습니까?

그래서 나는 텍스트 상자를 렌더링에 착수하지만,

내 프레임 워크를 촬영 한이 서버 측 또는 클라이언트 측 유효성 검사 (MVC의 눈에 거슬리지 확인)를 확인하지 않습니다, 그리고 약간의 eksampel을 다시

public static MvcHtmlString DummyForm(this HtmlHelper html) 
    { 
     StringBuilder sb = new StringBuilder(); 

     Type oftype = typeof(Foo); 
     string[] propertyNameToRender = oftype.GetProperties().Select(o => o.Name).ToArray(); 

     foreach (string s in propertyNameToRender) 
     { 
      MvcHtmlString htmlstring = System.Web.Mvc.Html.InputExtensions.TextBox(html, s); 
      sb.AppendLine(htmlstring.ToHtmlString()); 
     } 

     return MvcHtmlString.Create(sb.ToString()); 
    } 

그리고 Edit.cshtml

,536에 :
public class Foo 
    { 
     public virtual int Id { get; set; } 

     [System.ComponentModel.DataAnnotations.Required] 
     public virtual string Name { get; set; } 

     public virtual DateTime StartTime { get; set; } 
    } 

내 확장 메서드

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true); 
    @Html.DummyForm() 
} 

렌더링 된 html 출력을 살펴보면 동일합니다 (유효성 검사 attri없이) 유효성 검사 attri이 렌더링되지 않은 이유는 누구에게 말해 줄 수 있습니까?

Im mvc의 자체 렌더링 컨트롤을 사용하여 HtmlHelper가 모든 ModelMetadata 및 ModelState와 함께 뷰에서 전달됩니다.

답변

1

MvcHtmlString htmlstring = System.Web.Mvc.Html.InputExtensions.TextBox(html, s); 

을 변경 시도, 내 RenderProject에서 코드를 추가하고, 그것을 잘 작동합니다. 결론은 내 asp.net MVC 프로젝트 엉망입니다. 나는 이유를 모른다. : S

2

눈에 띄지 않는 확인 data-val-*FormContext이 초기화 될 때 렌더링됩니다. Html.BeginForm 이렇게,

@using (Html.BeginForm()) 
{ 
    @Html.DummyForm() 
} 

유효성 검사 속성으로 입력을 렌더링해야합니다.

+0

안녕하세요 나는 또한 그것을 시도했습니다. 같은 결과. 내 상위 게시물을 편집하여 내 양식 컨텍스트를 볼 수 있습니다. –

1

당신이 직접 System.Web.Mvc.Html.InputExtensions.TextBox 메서드를 호출한다는 것이 이상하게 보일 수 있습니다. 이 메서드는 내부적으로 Html.TextBox 및 기타 강력한 형식의 확장으로 호출됩니다. PLZ 내가 새로운 ASP.net MVC 사이트를 만들려고

MvcHtmlString htmlstring = html.TextBox(s); 
+0

렌더링에 대한 제어가 더 필요합니다. 모델을 전달할 때 하나의 속성을 드롭 다운, 하나는 intput으로 렌더링하고 다른 하나는 탭에서 렌더링해야합니다. 컨트롤의 그 양식은 지금 MVC 프레임 워크에 있지 않습니까? 아니면 뭔가 빠져 있습니까? 그래서 Render 메서드를 호출해야하지만 프레임 워크에 무엇을 말할 것인지,이 상자 유형을 입력해야하며이 탭 (jquery)에 무엇이 필요합니까? 희망은 당신에게 감각을 만들어 :) –

관련 문제