Có cách nào để xác định các điều khiển tải tệp lên bằng cách sử dụng trình trợ giúp Razor trong ASP.NET MVC3 không?Điều khiển tải tệp lên bằng cách sử dụng Dao cạo trong ASP.NET MVC3
Trả lời
Có không phải là một helper html cho đầu vào tập tin, nhưng những gì là sai với chỉ làm
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
<input type='file' name='blah' id='blah' />
}
Có một lớp FileUpload trong Microsoft.Web.Helpers ... http://msdn.microsoft.com/en-us/library/microsoft.web.helpers.fileupload(v=vs.99).aspx
tốt nhất/Chỉ có cách tôi đã tìm thấy để có được nó là bằng cách sử dụng NuGet trong VisualStudio. Tìm kiếm gói "microsoft-web-helpers" trong kho lưu trữ trực tuyến. Tuy nhiên, có một vấn đề mà tôi gặp phải. Một trong những phụ thuộc của gói là Facebook.Helper, nó sẽ cài đặt cùng một lúc. Nó sẽ đặt một tập tin gọi là "Facebook ???. Cshtml" (quên tên chính xác) trong thư mục AppCode của dự án của bạn. Vấn đề là Facebook ??? cshtml có một số phụ thuộc WebMatrix mà tôi không có và không muốn cài đặt. Đơn giản chỉ cần xóa các tập tin Facebook.cshtml (mà tôi sẽ không sử dụng, anyway) dường như để giải quyết vấn đề. Sau đó, tôi đã có thể biên dịch và gỡ lỗi như bình thường và sử dụng lớp FileUpload.
Dưới đây là một hướng dẫn, tôi phát hiện ra rằng sử dụng nó:
http://blog.tallan.com/2011/02/04/using-mvc3-razor-helpers-and-jcrop-to-upload-and-crop-images/
Hướng dẫn đó là OK, nhưng nó không giải thích rõ ràng mã nào đi đâu. Tôi muốn đề xuất điều này thay vì nó chỉ là về tải lên tập tin (không thay đổi kích thước hình ảnh là tốt): http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Creating-a-multiple-file-upload-form-in -ASPNET-MVC.aspx – Pauk
Liên kết của Pauk nhường chỗ cho con vẹt. Đây là [Liên kết đường dẫn] (http://web.archive.org/web/20150712030605/http://blogs.planetcloud.co.uk:80/mygreatdiscovery/post/Creating-a-multiple-file-upload-form -in-ASPNET-MVC.aspx) – jpaugh
SỬ DỤNG RAZOR
@*requieres installing Asp helpers/you can do it her from NuGet or logging som admin in packages*@
@using Microsoft.Web.Helpers;
@{
var fileName = "";
if (IsPost) {
var fileSavePath = "";
var uploadedFile = Request.Files[0];
fileName = Path.GetFileName(uploadedFile.FileName);
fileSavePath = Server.MapPath("~/UploadedFiles/" +
fileName);
uploadedFile.SaveAs(fileSavePath);
}
}
@FileUpload.GetHtml(
initialNumberOfFiles:1,
allowMoreFilesToBeAdded:false,
includeFormTag:false,
name: "Upload1",
uploadText:"Upload")
@if (IsPost) {
<span>File uploaded!</span><br/>
}
Không có thông tin đăng nhập IsPost' nào trong khung nhìn, tất cả đều nằm trong bộ điều khiển, phân tách lý tưởng giữa hai phương thức, một trong số đó có trình trang trí '[HttpPost]'. –
Không client side validation ra khỏi hộp. –
Đánh bại không có gì trong hộp – Jimmy
'' FilePath được đưa ra làm tên thuộc tính mô hình, Vì vậy, bạn có thể sử dụng nó như bất kỳ điều khiển nào khác. – PAVITRA