Проблема с вашим HttpPostedFile, если вы используете EditorFor (х => x.myfile), что он делает это инспектировать тип имущество, указанное в выражении и попытаться найти шаблон соответствия редактора для этого тип. Эти шаблоны указывают Razor, какой HTML он должен генерировать для свойства типа, который реализует шаблон. У Razor есть несколько шаблонов, которые вы можете переопределить, и они не видны в проекте, но HttpPostedFile не является одним из них, поэтому, возможно, вы видите FileName, ContentType и ContentLength в качестве интерфейса, отображаемого для этого HttpPostedFile.
Беллоу реализация этого класса 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();
}
}
Поскольку один из этих шаблонов не на настройки по умолчанию, Razor исследует класс и пытается создать редактор для каждой публичной собственности класса.
Если указан тип над свойством
[DataType(DataType.SELECTYOURTYPEHERE)]
Затем вы можете изменить шаблоны на
Views/Shared/EditorTemplates, например, вы можете сделать это
[DataType(DataType.Upload)]
public HttpPostedFile myfile { get; set; }
, а затем создайте и Upload.cshtml на Представления/Shared/EditorTemplates/Upload.cshtml с html, который вы хотите отобразить для загрузки.
Надеется, что это помогает
Не уверено, что леса в этом контексте, но делает [этот вопрос] (http://stackoverflow.com/questions/21772153/generate-file-upload-input-for-property-with -datatype-upload-attribute) help? – stuartd