0

div FileUploadContainer内でjavascriptを使用して動的に複数のファイルアップローダーを作成しました。フォームタグの外にbtnSubmitを配置すると、Request.Files.Countがゼロになります。Jsonを介してPopUp()を呼び出す必要があります。フォームタグ内にbtnSubmitを配置した場合javascriptではSave()を呼び出さず、フォームの送信時にPopUp()メソッドを呼び出します。Jsonを介してPopUp()を呼び出す必要があり、Request.Files.Count.Plsヘルプを取得する必要があります。

@using (Html.BeginForm("PopUp", "EnergyCatagory", FormMethod.Post, new { enctype = "multipart/form-data" }))
{ 
    <div id="FixedHeightContainer">
        <div id="FileUploadContainer">
        </div>           
        <input type="button" id="btnAddAttachment" name="btnAddAttachment" class="ZWidgetTitle"
            value="Add More Attachments" onclick="AddFileUpload()" />
    </div>
    <div id="NewAttachment">
        <div style="background-color: #DADADA;">
            <center>
                <label style="font-family: Verdana; font-size: 13px; font-weight: bold; color: black;
                    height: 30px; width: 100%; padding-top: 20px;" id="lblMessage">
                </label>
            </center>
        </div>
    </div>
    <div class="horizSep">
    </div>
      <div id="buttons">
       </div>          
}   <button id="btnSubmit" class="buttons" onclick="Save()">
        Attach</button>
 function Save()
{$.ajax({
            url: '/EnergyCatagory/PopUp',
            type: 'POST',
            contentType: 'application/json;',
            dataType: 'json',
            success: function (result) {
            alert("success");
            }
        });

}コントローラ - - -

    public ActionResult PopUp()
    {
        for (int i = 0; i < Request.Files.Count; i++)
        {
            HttpPostedFileBase PostedFile = Request.Files[i];
            if (PostedFile.ContentLength > 0)
            {
                string FileName = System.IO.Path.GetFileName(PostedFile.FileName);
                var path1 = Path.Combine(Server.MapPath("~/Files/"), FileName);
                //PostedFile.SaveAs(Server.MapPath("Files\\") + FileName);
                PostedFile.SaveAs(path1);
       return Json(
           new
           {
               CustomMessage = "My message",

           });
          }
        }
4

1 に答える 1

0

フォームが送信され、関数 onclick を呼び出さない場合は、入力タイプがボタンであるため、html リンク タグに変更できます。

また、インライン JavaScript (onclick) を呼び出すのは良い習慣ではありません。あなたは jquery を使用していることに気付きました。

function Save(){
 $.ajax({
        url: '/EnergyCatagory/PopUp',
        type: 'POST',
        contentType: 'application/json;',
        dataType: 'json',
        success: function (result) {
        alert("success");
        }
  });

  $("#btnSubmit").click(function(){
   Save();
});



@using (Html.BeginForm("PopUp", "EnergyCatagory", FormMethod.Post, new { enctype = "multipart/form-data" }))
{ 
<div id="FixedHeightContainer">
    <div id="FileUploadContainer">
    </div>           
    <input type="button" id="btnAddAttachment" name="btnAddAttachment" class="ZWidgetTitle"
        value="Add More Attachments" onclick="AddFileUpload()" />
</div>
<div id="NewAttachment">
    <div style="background-color: #DADADA;">
        <center>
            <label style="font-family: Verdana; font-size: 13px; font-weight: bold; color: black;
                height: 30px; width: 100%; padding-top: 20px;" id="lblMessage">
            </label>
        </center>
    </div>
</div>
<div class="horizSep">
</div>
  <div id="buttons">
   </div>

 <a id="btnSubmit" class="buttons">Attach</a>       
}   

Request.Files.Countゼロに等しいのは、入力タイプのファイルがないためだと思いますか? あなたは?

于 2013-03-21T03:33:38.543 に答える