Asp.net mvc 使用ajax模式弹出窗口时,asp.net mvc 4 httppostedfilebase未传递给控制器

Asp.net mvc 使用ajax模式弹出窗口时,asp.net mvc 4 httppostedfilebase未传递给控制器,asp.net-mvc,modal-dialog,asp.net-mvc-partialview,httppostedfilebase,Asp.net Mvc,Modal Dialog,Asp.net Mvc Partialview,Httppostedfilebase,论坛上也有一些类似的话题,但没有好的答案。第一个问题是,在使用模式弹出窗口时,是否可以将httppostedfilebase传递给控制器? 当我使用常规模型和视图时,一切都正常工作,但一旦我将此视图设置为partialview,则除了文件之外的所有内容都将传递给控制器。文件正在获取空值 ModalPopp正在执行的列表视图: 您能编辑您的问题并删除所有与此问题无关的代码吗?干杯。请建造一个MWE。我有一种感觉可能是什么问题,但是,如果这种感觉是正确的,那么真正的问题就不会在这里显示出来。只需按照

论坛上也有一些类似的话题,但没有好的答案。第一个问题是,在使用模式弹出窗口时,是否可以将httppostedfilebase传递给控制器? 当我使用常规模型和视图时,一切都正常工作,但一旦我将此视图设置为partialview,则除了文件之外的所有内容都将传递给控制器。文件正在获取空值

ModalPopp正在执行的列表视图:
您能编辑您的问题并删除所有与此问题无关的代码吗?干杯。请建造一个MWE。我有一种感觉可能是什么问题,但是,如果这种感觉是正确的,那么真正的问题就不会在这里显示出来。只需按照之前的建议编辑问题。非常感谢您,问题在于模式弹出和序列化。下面是一些关于这个问题的更多信息和正确答案。
<button style="cursor:pointer" type="submit" class="fluent-big-button" onclick="ShowModal('@Url.Action("Create", "Device")')" >
@using (Html.BeginForm("Create", "Device", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()

<div class="modal-body">
<div class="form-horizontal">           
    <fieldset>
        <legend>@Resources.Insert_New_Device</legend>   
        <div class="grid" style="margin: 0px auto">
            <div class="row" style="margin: 0px auto">
                <div class="span10">
                    <div class="row" style="margin: 0px auto"> 
                        <div style="white-space:nowrap" class="span2 readable-text"><label>@Resources.Device_No:</label> </div>
                        <div class="span3">               
                            <div class="input-control text" data-role="input-control">
                                @Html.TextBoxFor(m => Model.No, new { required = "required", autofocus = "autofocus", @tabindex="1"})
                                @Html.ValidationMessageFor(m => Model.No)
                                <button tabindex="-1" class="btn-clear" type="button"></button>
                            </div>
                        </div>
                        <div style="white-space:nowrap" class="span2 readable-text"><label>Tootja:</label> </div>
                        <div class="span3">               
                            <div class="input-control text" data-role="input-control">
                                @Html.TextBoxFor(m => Model.Manufacturer_Name, new { autofocus = "autofocus", @tabindex="2"})
                                @Html.ValidationMessageFor(m => Model.Manufacturer_Name)
                                <button tabindex="-1" class="btn-clear" type="button"></button>
                            </div>
                        </div>
                    </div>       

                    <div class="row" style="margin: 0px auto">

                        <div style="white-space:nowrap" class="span2 readable-text"><label>Pilt:</label> </div>
                        <div class="span3">                
                                <div class="fallback">
                                    <input type="file" name="DeviceImage" id="DeviceImage" />
                                </div>
                        </div>
                    </div>
                </div>
                <div class="row" style="margin: 0px auto">
                    <div class="span10">@Html.ValidationMessage("CustomError")</div>
                </div>
            </div>
        </div> 
    </fieldset>        
</div>       
</div>

<div class="modal-footer">
<div class="grid" style="margin: 0px auto">
            <div class="row" style="margin: 0px auto">
                <div class="span4"></div>
                <div class="span3"> 
                    <button class="button large span3" data-dismiss="modal">Cancel</button>
                </div>
                <div class="span3">
                    <input class="large span3 success" type="submit" value="Ok" />
                </div>
            </div>
</div>
</div>
} 
    public ActionResult Create()
    {
        ViewBag.exsistingDevices = GetExsistingDevices();
        return PartialView("_Create");
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    [Authorize(Roles = "Admin, Super")]
    public async Task<ActionResult> Create(Device device, HttpPostedFileBase DeviceImage)

    {
        try
        {
            if (ModelState.IsValid)
            {
                SPDBContext db = new SPDBContext();
                device.Last_Action_Date = DateTime.Now;


                // Insert image

                if (DeviceImage != null)
                {
                    if (DeviceImage.ContentLength > (2 * 1024 * 1024) && DeviceImage.ContentLength < 1)
                    {
                        ModelState.AddModelError("CustomError", "File size must be less than 2 MB");                          
                    }
                    var contentType = DeviceImage.ContentType;
                    device.Image = new byte[DeviceImage.ContentLength];
                    DeviceImage.InputStream.Read(device.Image, 0, DeviceImage.ContentLength);
                }
                db.Devices.Add(device);
                await db.SaveChangesAsync();
                return Json(new { success = true });
            }
        }
        catch (Exception e)
        {

        ModelState.AddModelError("CustomError", String.Format("{0}: {1}",Resources.Resources.Insert_Failed, e.Message));
        }
        return PartialView("_Create", device);
    }  
[NotMapped]
    public HttpPostedFileBase DeviceImage { get; set; }

public byte[] Image { get; set; }