私の英語でごめんなさい。サーバーへのファイル転送 (画像) に関する問題を取り上げます。ページ上の 1 つのフォームから 1 つのファイルに転送された場合は問題ありませんが、(ajax を使用して) 複数のフォームを実行しようとすると、データがまったく送信されません。画像 (特にデータベース) の形式で合計 7 種類あり、それぞれが典型的なモデルです。
public class Image
{
public int Id { get; set; }
public int ProductId { get; set; }
public int Number { get; set; }
public HttpPostedFileBase Data { get; set; }
public byte[] Img { get; set; }
public string MIMEType { get; set; }
}
Img - データベースからデータを取得するプロパティ、Data - ページから設定
「共通」ビュー:
@for (int i = 1; i < 8; i++)
{
<div id="image-@i">
@Html.Partial("EditImage", new Image() { Id = Model.Imgs[i-1], Number = i, ProductId = Model.Id })
</div>
<div class="clear"></div>
}
そして主な問題は、「EditImage」を表示することです:
@model Image
@using (Ajax.BeginForm("EditImage", "Product", null, new AjaxOptions()
{
Url = "/Product/EditImage",
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "image-" + Model.Number.ToString()
}, new { enctype = "multipart/form-data" }))
{
@Html.HiddenFor(model => model.MIMEType)
@Html.HiddenFor(model => model.ProductId)
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.Number)
<div class="mini-image left">
<img src="@Url.Action("Image", "Home", new { Id = Model.Id })" />
</div>
<input type="file" name="Data" />
<input id="ok-@Model.Number" type="submit" value="Send"/>
<input id="del-@Model.Number" type="reset" value="Cancel"/>
}
アクションの最初の行にブレークポイントを設定しました。プロパティ「ProductId」と「Number」が渡されました。Data is null :( set id="Data", id="Data@(Model.Number)" を試しましたが失敗しました。
更新: 思ったより難しいです。Request.Files.Count は 0 です