私がやりたいのは、1 つ読んだ後に「新しいファイル」の数を更新することです。まず最初に、新しいファイルの数が記載されたテキストがあります (新しいファイルとは、まだダウンロードしていない、またはダウンロードするためにクリックしたファイルを意味します)。
<a id="Plans">Plans (@Model.NewPlansQuantity)</a>
「ダウンロードリンク」をクリックするたびに、ファイルをダウンロードして、新しいと見なしたファイルの数を更新する必要があります。これはダウンロードリンクです:
foreach (var item in @Model.MediaItems)
{
<tr>
<td>
@Html.ActionLink(@item.Name, "DownloadFile", "Controller",
new
{
FileName = item.FileName,
Type = item.Type,
FileID = item.MediaItemID
}, new { @class = "DownloadLink" })
</td>
このリンクは、次のアクションを呼び出します。
public FilePathResult DownloadFile(string FileName, int Type, int FileID)
{
var file= FileRepository.GetFiles(FileID);
var fileroute = FilesRepository.FileRoute.FirstOrDefault(x => x.Type == Type);
if (file != null)
{
file.Read = true;
FileRepository.SaveFile(file );
}
var route = Server.MapPath(Url.Content(fileroute.Route));
var path = Path.Combine(route, FileName);
FileInfo info = new FileInfo(path);
if (info.Exists)
{
return File(path, "application/octet-stream", FileName);
}
else
{
throw new HttpException(404, "Not found");
}
}
アクション メソッドで行っていることは、ファイル エンティティを読み取りとして更新し、それをダウンロードすることです。それを行った後、上記のコードの最初の行である新しいファイルの量のテキストを更新する必要があります(私が思うに ajax 呼び出しを行うことによって)。次のイベントで ajax 呼び出しを実行してみました:
$('.DownloadLink').live("click", function () {
//Tried to do the ajax call here
});
ダウンロード リンク イベントのクリックで ajax 呼び出しを実行しようとしましたが、うまくいきませんでした。同時にファイルのダウンロード要求を行っていたためか、ajax 呼び出しが停止しているように見えました。誰もこれを行う方法を知っていますか?