olarak ayarlandığında ASP.NET MVC dosya modeli bağlama yayımlandı ASP.NET MVC model bağlamada özel bir model ciltleyicide istek içeriğine manüel olarak bakmadan postalanan dosyalara (<input type="file" />
) sahip olmanın bir yolu var mı ve giriş olarak sadece kayıtlı bir dosyayı alan ayrı bir işlem yöntemi oluşturmadan?Parametre model
Bu işe olacağını sanırdım:
class MyModel {
public HttpPostedFileBase MyFile { get; set; }
public int? OtherProperty { get; set; }
}
<form enctype="multipart/form-data">
<input type="file" name="MyFile" />
<input type="text" name="OtherProperty" />
</form>
public ActionResult Create(MyModel myModel) { ... }
Fakat yukarıdaki senaryoyu göz önüne alındığında, MyFile
bağlayıcı bağlamında değer sağlayıcı değerlerin bile bir parçası değildir. (. OtherProperty
elbette,) Ama eğer bunu yaparsam çalışır:
public ActionResult Create(HttpPostedFileBase postedFile, ...) { ... }
, neden hiçbir parametre bir modeldir ortaya bağlayıcı gelmez ve bunu çalışmasını nasıl sağlayabilirsiniz? Özel model bir bağlayıcı kullanmayla ilgili bir sorunum yok, ancak bunu özel bir modelde Request.Files["MyFile"]
'a bakmadan nasıl yapabilirim?
Tutarlılık, netlik ve test edilebilirlik için, kodumun, istek bağlamını manuel olarak incelemeden, yayınlanan dosyalarla ilişkili olanlar da dahil olmak üzere, bir modeldeki tüm özelliklerin otomatik olarak bağlanmasını sağlamak istiyorum. Şu anda the approach Scott Hanselman wrote about kullanarak model bağlama test ediyorum. Veya bu konuda yanlış bir şekilde mi gidiyorum? Bunu nasıl çözeceksin? Ya da Request.Form ve Request.Files arasındaki ayrılık geçmişinden dolayı bu tasarım ile mümkün değil mi?
* Not; Eğer yalaka olma önce tam ve dikkatli bir şekilde soruyu okursanız –
Aynı kullanmak var ama hata var: - birden çok parametre bağlama olamaz, benim $ .ajax i belirledik: - türü: 'POST', dataType: 'json', contentType: 'çok parçalı/form-data' , data: formData – ujjaval