为什么HttpPostedFileBase文件始终为null

时间:2016-12-08 00:26:46

标签: jquery ajax asp.net-mvc upload

您好我有一个对话框弹出窗口包含更新表单和上传输入 我创建了更新操作,并添加了一些上传代码 问题是输入文件在

形式中始终为null

控制器

[HttpPost]
public ActionResult Setting(user user, HttpPostedFileBase file)
{

查看

@model Magellane.Models.user
@using (Html.BeginForm("Setting", "Account", FormMethod.Post, new { role = "form", id = "profileForm", @class = "form-horizontal", enctype = "multipart/form-data" }))
{
    @Html.ValidationSummary(true)
    <input type="hidden" name="user_id" value="@Session["user_id"]">
    <div class="form-group">
        <label for="pass1" class="col-sm-2 control-label">Nom decole</label>
        <div class="col-sm-10">
            <input class="form-control-modal required" id="company" type="text" value="@Model.company" name="company" minlength=5>
            <span class="field-validation-error" data-valmsg-for="company" data-valmsg-replace="true"></span>
        </div>
    </div>
    <div class="form-group">
        <label for="pass1" class="col-sm-2 control-label">Logo</label>
            <input type="file" class="margin-none" name="logo" id="file"  onchange="readURL(this);" />
    </div>



$.ajax({
    url: '/Account/setting',
    type: 'POST',
    data: $('form').serialize(),
    dataType: 'json',
    async: false,
    success: function (xhr, status, error) {
        bootbox.alert(xhr.message);
    },
    error: function (xhr, ajaxOptions, thrownError) {
        bootbox.alert(thrownError);
    }
});

有没有解决方案?

1 个答案:

答案 0 :(得分:0)

问题是您的文件<input>标记name=logoHttpPostedFileBase file变量/参数不同。 (即徽标!=文件)

可能的修复。

  • 您可以将HttpPostedFileBase file更改为HttpPostedFileBase logo

  • 您可以更改<input type="file" name="file">

注意请务必检查name的{​​{1}},因为使用control/tag而非name的Asp.Net MVC地图。