2010-07-08 7 views
0

게으르지 만, 처음으로 MVC 프로젝트에서 현재 스프린트가 2 일 기한이 지나지 않았으므로 뷰 추가 마법사를 사용하여 생성했습니다 강력하게 형식화 된 뷰를 만들었지 만 뷰 모델 클래스로 ViewData 클래스를 사용하기 시작 했으므로 마법사는 ViewDataBase의 필드를 생성하고 파생 된 ViewData는 생성하지 않습니다.사용자 정의 MVC ViewData 클래스를 사용할 때 뷰의 코드 생성이 끊어졌습니다.

파생 된 ViewData는 런타임에서 팩토리에 의해 작성되며, 디자이너/마법사가 기본 클래스 속성 만 제공 할 수 있다고 가정합니다. 그러나 이것에 대해 할 수있는 것이 있습니까? 여기

내가 뭘하려

+0

제가 이해하고 있는지 확인하기 위해 ViewDataBase라는 클래스와 구체적인 클래스, 예를 들어 CustomerViewData : ViewDataBase 클래스가 있습니다. 마법사를 사용하여 CustomerViewData를 사용하여 강력한 형식의 뷰를 만들면 ViewDataBase? –

+1

Add View를 사용하기 전에 다시 컴파일 했습니까? 뷰는 소스 코드가 아닌 마지막으로 컴파일 된 어셈블리를 기반으로 만들어집니다. –

+0

@ Raj, 맞습니다. – ProfK

답변

1

ProfK (VS 2010 MVC2는) :

public class ViewDataBase 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

public class CustomerViewData : ViewDataBase 
{ 
    public string Address { get; set; } 
} 

마우스 오른쪽 단추로 내 행동에 클릭하고 강하게 상세 CustomerViewData를 사용하여 볼 입력 만들었습니다. 다음 내용이 생성됩니다.

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MyApplication.Models.CustomerViewData>" %> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
     <title>Index</title> 
    </head> 
    <body> 
     <fieldset> 
      <legend>Fields</legend> 

      <div class="display-label">Address</div> 
      <div class="display-field"><%: Model.Address %></div> 

      <div class="display-label">ID</div> 
      <div class="display-field"><%: Model.ID %></div> 

      <div class="display-label">Name</div> 
      <div class="display-field"><%: Model.Name %></div> 

     </fieldset> 
     <p> 
      <%: Html.ActionLink("Edit", "Edit", new { /* id=Model.PrimaryKey */ }) %> | 
      <%: Html.ActionLink("Back to List", "Index") %> 
     </p> 

    </body> 
    </html>