2017-01-18 1 views
0

스캐 폴딩되면 HTML 파일 업로드 객체를 렌더링하는 뷰가 생성되는 모델을 만들 수 있습니까?Scaffold a FileUploader

예를 들어 이미지 업 로더를 포함하도록보기를 비계 할 이미지를 업로드하는 모델을 디자인하십시오.

나는 그가 다음과 같은 속성을 사용하여 모델을 시도했지만 업로드 옵션이없는 텍스트 상자로 렌더링되었습니다. 당신이 EditorFor (X => x.myfile)를 사용하여 그것이 무엇을하는 형식을 식에 지정된 속성을 검사하고 그에 대한 일치하는 편집기 템플릿을 찾기 위해 시도 할 경우

[DataType(DataType.Upload)] 
    [Display(Name = "Upload a File")] 
    [Required(ErrorMessage = "Please choose file to upload.")] 
    public string file { get; set; } 

    [Display(Name = "Upload File 2")] 
    [Required(ErrorMessage = "Please choose file to upload.")] 
    public HttpPostedFile myfile { get; set; } 
+0

확실하지 도움이되지만 않습니다 [이 질문] (http://stackoverflow.com/questions/21772153/generate-file-upload-input-for-property-with -datatype-upload-attribute) 도움이 필요하십니까? – stuartd

답변

0

문제는, 당신의 HttpPostedFile 함께 유형. 이 템플릿은 Razor에게 템플릿이 구현하는 유형의 속성에 대해 생성해야하는 HTML을 알려줍니다. 면도기는 당신이 오버라이드 할 수있는 두 개의 템플릿을 가지고 있으며 프로젝트에서 볼 수 없지만 HttpPostedFile은 그 중 하나가 아니기 때문에 FileName, ContentType 및 ContentLength가 HttpPostedFile 용으로 렌더링 된 인터페이스로 표시됩니다.

우는 소리는

public abstract class HttpPostedFileBase { 

     public virtual int ContentLength { 
      get { 
       throw new NotImplementedException(); 
      } 
     } 

     public virtual string ContentType { 
      get { 
       throw new NotImplementedException(); 
      } 
     } 

     public virtual string FileName { 
      get { 
       throw new NotImplementedException(); 
      } 
     } 

     public virtual Stream InputStream { 
      get { 
       throw new NotImplementedException(); 
      } 
     } 

     [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "filename", 
      Justification = "Matches HttpPostedFile class")] 
     public virtual void SaveAs(string filename) { 
      throw new NotImplementedException(); 
     } 

    } 

그 템플릿 중 하나가 디폴트에 없기 때문에, 면도기 클래스를 탐구하고 클래스의 각 공용 속성 편집기를 생성하려고 클래스 HttpPostedFile의 구현입니다. 당신이 부동산을 통해 데이터 형식을 지정하는 경우

[DataType(DataType.SELECTYOURTYPEHERE)] 

그런 다음 당신은 예를 들어, 당신은이

[DataType(DataType.Upload)] 
public HttpPostedFile myfile { get; set; } 
을 할 수

조회/공유/EditorTemplates에 템플릿을 대체 할 수 있습니다

다음에 Upload.cshtml을 만들고 보기/공유/EditorTemplates/Upload.cshtml 을 업로드 용으로 표시하려는 html로 변경하십시오.

희망이이 상황에서 비계에 대한

관련 문제