Ok jadi saya mencoba melakukan unggahan file di halaman web saya namun saya mengalami masalah di mana Request.Files.Count > 0 selalu 0 dan tidak akan memasukkan pernyataan if. Saya telah mencoba beberapa cara untuk melakukan ini dan melihat beberapa jawaban di antara masalah serupa ini (ada banyak) tetapi tidak ada solusi yang berhasil.

Pengontrol

public class TicketController : CommonController
{
        [HttpPost]
        public async Task<ActionResult> Create(TicketViewModel model)
        {
            
            if (ValidateModel(model))
            {

                if (Request.Files.Count > 0) /*This is always 0*/
                {
                   HttpPostedFileBase file = Request.Files[0];
                }
            }
         }
}

Lihat

@using (Html.BeginForm("Create", "TicketController", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div class="editor-field">
        @Html.TextBoxFor(model => model.FileUpload, new { type="file", name = "FileUpload"})
        @Html.ValidationMessageFor(model => model.FileUpload) 
    </div>

}

Model

public class TicketViewModel
{
     public HttpPostedFileBase FileUpload { get; set; }
}

Mencoba menambah atau menghapus dan mengubah nama di View dan variabel di Model. Tapi tidak beruntung selalu mencapai nol bahkan ketika diisi. Pemahaman saya adalah jika kunci permintaan terdeteksi, itu memperbarui variabel untuk benar-benar mengandung sesuatu. Jadi ada pemutusan dari View dan Controller saya dan saya tidak bisa mengetahuinya. Arah apa pun akan sangat dihargai.

EDIT: Tombol Kirim

<div class="form-group bottom-button-row">
    <div class="col-md-offset-2 col-lg-offset-2 col-sm-offset-4">
        <div class="col-sm-12 btn-panel">
            <div class="float-left">
                <input type="button" value="Submit" class="btn btn-primary" data-bind="click:submit,disable:submitting" />
                <a role="button" class="btn btn-default" href="@ViewBag.CancelUrl" data-bind="attr:{disabled:submitting}">Cancel</a>
            </div>
            <div class="loader" data-bind="visible: submitting" style="display: none;"></div>
        </div>
    </div>
</div>
0
CryptiK 11 Mei 2021, 18:21

2 jawaban

Jawaban Terbaik

Ternyata file CSHTML lain sudah memanggil file CSHTML ini dalam formulir jadi saya membuat formulir di dalam formulir yang tidak didukung. Saya memperbarui formulir luar dan semuanya baik-baik saja dan berfungsi. Komentar orang kode Anda!

0
CryptiK 13 Mei 2021, 16:20

Dalam pandangan Anda gunakan kode di bawah ini berfungsi.

@using (Html.BeginForm("Create", "TicketController", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div class="editor-field">
        <input id="file" type="file" name="file">
    </div>
<button class="btn" type="submit">Submit</button>
}

Di pengontrol

public class TicketController : CommonController
{
        [HttpPost]
        public ActionResult Create(TicketViewModel model,HttpPostedFileBase file)
        {
            
            if (file!=null)
                {
                    if (file.ContentLength > 0)
                    {
                          //your file operation you can do here.
                    }
                }
         }
}
0
Supraj V 11 Mei 2021, 17:47