2016-04-07 9 views
0

Değişken adları bir Web sitesi içinde yüklenen ve her ne kadar değişken adlar içinde olsa da, bir Web sitesine yüklenen ve Azure'da depolanan dosyaların dosya boyutunu ve Dosya Boyutunu döndüremediğim bir sorunum var Denetleyici.MVC - Azure'da CSHTML'de Dosya Özniteliklerini Geri Alma httppost adresinden dön

benim CSHTML bir pasajı şöyle görünür: Gördüğünüz gibi

<table class="table table-striped table-hover "> 
<thead> 
<tr> 
    <th>FIlename</th> 
    <th>Modified</th> 
    <th>File Size</th> 
    <th>Download File</th> 
    <th>Delete File</th> 
    </tr> 
</thead> 

<tbody> 
@foreach (var item in Model) 
{ 
<tr> 
    <td>@item.Name</td> 
    <td>Modified</td> 
    <td>@item.ContentLength</td> 
    <td><a id="@item" href="@item" onclick="downloadFile('@item')">Download</a></td> 
    <td><a id="@item" href="#" onclick="deleteFile('@item')">Delete</a></td> 
</tr> 
} 
</tbody> 
</table> 

, ben item.Name var ama ben denedim hepsi aşağıda özetlemeye olacak diğerleri denedim. Dosyayı mükemmel bir şekilde indirip silebileceğimi belirtmek gerekir. Benim Kontrolör

Benim en önemli parçasıdır: Gördüğünüz gibi

public class HomeController : Controller 
{ 

    BlobStorageService _blobStorageService = new BlobStorageService(); 

    public ActionResult Upload() 
    { 
     CloudBlobContainer blobContainer = _blobStorageService.GetCloudBlobContainer(); 
     List<string> blobs = new List<string>(); 
     foreach (var blobItem in blobContainer.ListBlobs()) 
     { 
      blobs.Add(blobItem.Uri.ToString()); 
     } 
     return View(blobs); 
    } 

    [HttpPost] 
    public ActionResult Upload(HttpPostedFileBase file) 
    { 
     if (file.ContentLength > 0) 
     { 
      CloudBlobContainer blobContainer = _blobStorageService.GetCloudBlobContainer(); 
      CloudBlockBlob blob = blobContainer.GetBlockBlobReference(file.FileName); 
      blob.UploadFromStream(file.InputStream); 
     } 
     return RedirectToAction("Upload"); 
    } 

, dosya boyutu ve FileName olduğu ContentLength HomeController kapsamında bulunmaktadır.

ben sırayla aşağıdaki farklı örnekler denedi o

@ item.FileName, @ item.file.FileName, @ item.HttpPostedFileBase.Filename @ file.FileName, @ item.filename

çalışma almak - ve diğerleri için de aynısı. Cevabı biliyor yaparsanız

, bana nerede bulduğunu kaynağını söyleyebilir, onların modüllerinin belgelerine sahip olan Python ile çalışmaya alışkınım ama bu

cevap

0

sorun olduğunu çok farklıdır GET Yükleme görünümünü oluşturmak için kullandığınız ViewModel.

[HttpGet] 
public ActionResult Upload() {  
    List<string> blobs = new List<string>(); 
    // add URI strings to list ... 
    return View(blobs, "Upload"); 
} 

Bu Model bir List<string> olduğunu da CSHTML anlamına gelir.

Gerçekten istediğiniz şey, yalnızca URI'leri değil, DosyaAdı ve ContentLength'u tutan bir görünüm modelleri koleksiyonudur. cshtml bir @model yönergesini kullanarak

public class FileDisplayModel { 
    public string Uri { get; set; } 
    public string Name { get; set; } 
    public int ContentLength { get; set; } 
} 

IDE size denetleyicisinden sağ modele geçmek olup olmadığını kontrol sağlar. .net için

@* Upload.cshtml *@ 
@model IList<FileDisplayModel> 

Belgeler MSDN'de bulunabilir: HttpPostedFileBase Class İşte

Ben Resim yükleme için kullanılan bir öğretici olduğunu: File Uploads in ASP.NET MVC with View Models

+0

Yani FileDisplay adlı yeni modeli oluşturmak gerekir? – user3019191

+0

Evet, Denetleyicinizde bir ViewModel oluşturup doldurun, ardından Görünümünüzü oluşturmak için kullanın. –