mvc3を使用していて、それぞれが1ページ内にファイルをアップロードする一連のajaxフォームを作成しようとしています。ここでは、ページの表示があります:ajaxフォームを使用したmvc3ファイルのアップロード - Request.Files empty
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
@Html.Partial("_UploadItem")
@Html.Partial("_UploadItem")
@Html.Partial("_UploadItem")
<script type="text/javascript">
function Go() {
// loop through form tags
for (var n = 0; n < document.forms.length; n++) {
var f = document.forms[n];
// if a dress is chosen, a caption is chosen
// and a file is chosen, then submit the ajax form
if (f.dressid.value != '' &&
f.dresscaption.value != '' &&
f.fileitem.value != '')
f.submit();
}
}
</script>
<input type="button" onclick="Go();"/>
その後ゴー()関数は、各フォーム上のすべての3枚(dressid、dresscaption、およびfileitem)が非空であるかどうかをチェックし、Ajaxのフォームをループし、コールはフォームを送信し、非同期アップロードを開始します。私はマルチパート属性で各フォームをマークしている
@using SoRefeising.Models
@using (Ajax.BeginForm("UploadFile", new { }, new AjaxOptions { HttpMethod = "POST" }, new { enctype="multipart/form-data"}))
{
List<SelectListItem> items = (List<SelectListItem>)ViewBag.Dresses;
<span>Dress</span>
@Html.DropDownList("dressid", items, "Choose Dress");
<span>Caption</span>
@Html.TextBox("dresscaption")
<input type="file" id="fileitem" />
}
:
はここで部分図です。ページが生成されると、私は次を得る:すべてがOKに見える
<form action="/upload/UploadFile" data-ajax="true" data-ajax-method="POST" enctype="multipart/form-data" id="form0" method="post"> <span>Dress</span>
<select id="dressid" name="dressid"><option value="">Choose Dress</option>
<option value="1">Simpson01</option>
<option value="2">Simpson02</option>
</select> <span>Caption</span>
<input id="dresscaption" name="dresscaption" type="text" value="" /> <input type="file" id="fileitem" />
</form>
<form action="/upload/UploadFile" data-ajax="true" data-ajax-method="POST" enctype="multipart/form-data" id="form1" method="post"> <span>Dress</span>
<select id="dressid" name="dressid"><option value="">Choose Dress</option>
<option value="1">Simpson01</option>
<option value="2">Simpson02</option>
</select> <span>Caption</span>
<input id="dresscaption" name="dresscaption" type="text" value="" /> <input type="file" id="fileitem" />
</form>
<form action="/upload/UploadFile" data-ajax="true" data-ajax-method="POST" enctype="multipart/form-data" id="form2" method="post"> <span>Dress</span>
<select id="dressid" name="dressid"><option value="">Choose Dress</option>
<option value="1">Simpson01</option>
<option value="2">Simpson02</option>
</select> <span>Caption</span>
<input id="dresscaption" name="dresscaption" type="text" value="" /> <input type="file" id="fileitem" />
</form>
...
ここでアクションが呼び出された
[HttpPost]
public ActionResult UploadFile(string dressid, string dresscaption)
{
HttpPostedFileBase hpf = Request.Files[0] as HttpPostedFileBase;
...
、リクエストと呼ばれ、コントローラのアクションです.Filesコレクションには、選択したファイルではなく、0個のアイテムがあります。私は目立たないjavascriptを有効にしています。控えめなファイルはマスターページに読み込まれ、他のページでも動作します。
ファイルサイズに注意することについてフォーラムでメッセージが表示されました。私がテストしているファイルは<です。2k
Request.Filesに項目が存在しない理由は何ですか?あなたはこの三回を持っている理由は、すべての
可能です。やったよ:)。ここのリンクです: [http://stackoverflow.com/a/13522052/1067149][1] [1]:のhttp://のstackoverflow。com/a/13522052/1067149 –