ユーザーが自分の Web サイトの Uploads フォルダーにアップロードした添付ファイル (保存ではなく) を開くか表示しようとしています。添付機能は、主に現在の Web サイトのバグのスクリーン ショットに使用されます。ユーザーが送信したすべてのバグを表示するバグ インデックス ビューがあり、リンクのようなペーパー クリップをクリックして添付ファイルを表示できるようにしたいと考えています。このようなことを行う方法がわかりません。部分ビューまたは他のヘルパーメソッドを使用する必要がありますか? 添付ファイルを表示するメソッドをいくつか書き込もうとしましたが、ビューで正しく呼び出しているとは思いません。アップロード メソッドとビュー アタッチメント メソッドのビュー コードとコントローラー コードを含めました。診断のために他のコードが必要な場合はお知らせください。ご協力いただきありがとうございます!
バグ インデックス ビュー
@model PagedList.IPagedList<DBFirstMVC.Models.bug>
@{
ViewBag.Title = "BugIndex";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using PagedList;
<h2 class="corporate sifr">@ViewBag.Title</h2>
<div class="crossband">
@using (Html.BeginForm())
{
<div class="lefty">
Search Bugs Index: @Html.TextBox("SearchString", "", new { @class = "text" })
</div>
<input type = "submit" value = "Search" class = "button1" />
}
<div class="righty">
@Html.ActionLink("Report a Bug", "ReportBugs", "Support", null, new { @class = "button1" })
</div>
</div>
<div class="crossband">
<div class="lefty">
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount
@if (Model.HasPreviousPage)
{
@Html.ActionLink("<<", "", new { page = 1, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, Versions = ViewBag.SelectedVersion })
@Html.Raw(" ");
@Html.ActionLink("< Prev", "", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, Versions = ViewBag.SelectedVersion })
}
else
{
@:<<
@Html.Raw(" ");
@:< Prev
}
@if (Model.HasNextPage)
{
@Html.ActionLink("Next >", "", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, Versions = ViewBag.SelectedVersion })
@Html.Raw(" ");
@Html.ActionLink(">>", "", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, Versions = ViewBag.SelectedVersion })
}
else
{
@:Next >
@Html.Raw(" ")
@:>>
}
</div>
<div class="righty">
Showing Records @Model.FirstItemOnPage to @Model.LastItemOnPage from @Model.TotalItemCount records
</div>
</div>
<table>
<tr>
<th>
@Html.ActionLink("Date Submitted", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "date_submitted"})
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "date_submitted"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "date_submitted"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th>
@Html.ActionLink("Submitted By", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "submitted_by"})
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "submitted_by"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "submitted_by"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th>
@Html.ActionLink("Description", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "Description" })
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "Description"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "Description"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th>
@Html.ActionLink("Priority", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "Priority" })
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "Priority"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "Priority"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th>
@Html.ActionLink("Estimated Completion Date", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "estimated_completion_date" })
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "estimated_completion_date"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "estimated_completion_date"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th>
@Html.ActionLink("Status", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "status" })
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "status"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "status"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th>
@Html.ActionLink("Developer Comments", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "developer_comments" })
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "developer_comments"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "developer_comments"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th>
@Html.ActionLink("Attachment", "BugIndex", new { sortOrder = ViewBag.currentOrder == "asc" ? "desc" : "asc", sortField = "attachment" })
@if (ViewBag.currentOrder == "asc" && ViewBag.CurrentField == "attachment"){<img id="asc" src="@Url.Content("~/Images/ico_tablesortoffset_asc.gif")" alt = "Asc Arrow" />}
@if (ViewBag.currentOrder == "desc" && ViewBag.CurrentField == "attachment"){<img id="desc" src="@Url.Content("~/Images/ico_tablesortoffset_desc.gif")" alt = "Desc Arrow" />}
</th>
<th></th>
</tr>
@{
var row_class = "odd";
}
@foreach (var item in Model)
{
row_class = row_class == "odd"? "even" : "odd";
<tr class="@row_class">
<td>
@Html.DisplayFor(modelItem => item.date_submitted)
</td>
<td>
@Html.DisplayFor(modelItem => item.submitted_by)
</td>
<td>
@Html.DisplayFor(modelItem => item.description)
</td>
<td>
@ViewBag.Priorities[(item.priority-1)].PRIORITY
</td>
<td>
@Html.DisplayFor(modelItem => item.estimated_completion_date)
</td>
<td>
@Html.DisplayFor(modelItem => item.status)
</td>
<td>
@Html.DisplayFor(modelItem => item.developer_comments)
</td>
<td>
@if (item.attachment != null){<img id="success" src="@Url.Content("~/Images/attach.png")" alt = "attachment" />}
@Url.Action("", "ViewAttachment", new { id = item.bug_pk}) <!--<----- I think this is the problem-->
</td>
<td>
@Html.ActionLink("Edit", "EditBugs", new { id = item.bug_pk }) |
@Html.ActionLink("Delete", "DeleteBugs", new { id = item.bug_pk })
</td>
</tr>
}
</table>
コントローラ メソッド
[Authorize]
public String Uploadfile(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Uploads"), fileName);
string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(file.FileName);
int iteration = 1;
while (System.IO.File.Exists((path)))
{
fileName = string.Concat(fileNameWithoutExtension, "-", iteration, System.IO.Path.GetExtension(file.FileName));
path = Path.Combine(Server.MapPath("~/Uploads"), fileName);
iteration++;
}
file.SaveAs(path);
}
return file.FileName;
}
public ActionResult ViewAttachment(HttpPostedFileBase file)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Uploads"), fileName);
return View(file.FileName);
}