4
MVC Webグリッドにダウンロード機能を実装しようとしています。ここにデモコードがあります。ここでは、このコードでBase64 Stringを使用してMVC Webgridで問題をダウンロードしてください。
モデル
public class Student
{
public string Name { get; set; }
public string Address { get; set; }
public string ByteArray { get; set; }
public List<Student> StudentList { get; set; }
}
ビュー
@model Fileuploaddemo.Models.Student
@{ var grid = new WebGrid(Model.StudentList);}
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
@Html.LabelFor(model => model.Address)
@Html.EditorFor(model => model.Address)
@grid.GetHtml(
htmlAttributes: new
{
id = "gridT1",
@calss = ""
},
tableStyle: "webgrid-table",
headerStyle: "webgrid-header",
columns: grid.Columns(
grid.Column(columnName: "Name", header: "Name"),
grid.Column(columnName: "Address", header: "Address")))
コントローラ
public ActionResult Index()
{
Student obj = new Student();
obj.StudentList = new List<Student>();
return View(obj);
}
[HttpPost]
public ActionResult Index(Student obj, HttpPostedFileBase file1)
{
if (file1 != null)
{
MemoryStream target = new MemoryStream();
file1.InputStream.CopyTo(target);
byte[] data = target.ToArray();
obj.ByteArray = Convert.ToBase64String(data);
}
obj.StudentList = new List<Student>();
obj.StudentList.Add(obj);
return View(obj);
}
、私はdisplにしようとしていますMVC Webグリッド内のStudentの詳細とファイルダウンロードオプション。
ここでは、ファイルをダウンロードする方法がわかりません。これは、base64string形式です。
問題の解決にお手伝いをしてください。
ありがとうございました。
私はこれを試しましたが、ファイルがBase64string形式で保存されているため、actionlinkのルーティング値としてファイルを渡すことができません。 –
なぜでしょうか?私は上記の例で通り抜けていますが、うまくいきます。とにかく、レコードのIDをコントローラに渡すことができ、コントローラではIDを使ってbase64文字列を検索し、ダウンロード、それは本当にシンプルです。ちょうど学生クラスにIDプロパティを追加し、ActionLinkをHtml.ActionLink( "Download"、 "DownloadAction"、 "Student"、new {id = ID}、null)に変更してください –