【问题标题】:HttpPostedFile return null value?HttpPostedFile 返回空值?
【发布时间】:2020-01-13 11:21:57
【问题描述】:

我有一个表单将 POST 数据发送到 Action,并且一个模型有 HttpPostedFile 字段,但是当我将表单数据发送到 Action 时,我只得到空值 HttpPostedFile 字段 .

这是我的模特:

public class MemberModel
{
    [DisplayName("Member Name")]
    public string Name { get; set; }
    [DisplayName("Telephone / Mobile Number")]
    public string PhoneNumber { get; set; }
    [DisplayName("Upload File")]
    public string ImagePath { get; set; }
    public HttpPostedFile ImageFile { get; set; }
}

这是我的行动:

public ActionResult ContactForm(MemberModel membervalues)
    {
        //Use Namespace called :  System.IO
        string FileName = Path.GetFileNameWithoutExtension(membervalues.ImageFile.FileName);

        //To Get File Extension
        string FileExtension = Path.GetExtension(membervalues.ImageFile.FileName);

        //Add Current Date To Attached File Name
        FileName = DateTime.Now.ToString("yyyyMMdd") + "-" + FileName.Trim() + FileExtension;

        //Get Upload path from Web.Config file AppSettings.
        string UploadPath = ConfigurationManager.AppSettings["UserImagePath"].ToString();

        //Its Create complete path to store in server.
        membervalues.ImagePath = UploadPath + FileName;

        //To copy and save file into server.
        membervalues.ImageFile.SaveAs(membervalues.ImagePath);

        //To save Club Member Contact Form Detail to database table.


        var db = new ClubMemberDataClassesDataContext();

        tblMember _member = new tblMember();

        _member.ImagePath = membervalues.ImagePath;
        _member.MemberName = membervalues.Name;
        _member.PhoneNumber = membervalues.PhoneNumber;

        db.tblMembers.InsertOnSubmit(_member);
        db.SubmitChanges();
        return View();
    }

这是我的表单视图:

<div class="form-group">
    @Html.LabelFor(model => model.ImagePath, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        <input type="file" name="ImageFile" required />
    </div>
</div>

当我尝试上传图片文件时,这个结果:

【问题讨论】:

  • 我通过 HttpPostedFileBase 更改了 HttpPostedFile,程序运行。但我不知道为什么?

标签: c# asp.net-mvc forms


【解决方案1】:

您应该使用HttpPostedFileBase 而不是HttpPostedFile

备注

HttpPostedFileBase 类是一个抽象类,它包含 与 HttpPostedFile 类相同的成员。 HttpPostedFileBase 类 允许您创建类似于 HttpPostedFile 的派生类 类,但您可以自定义并且在 ASP.NET 管道之外工作

此外,HttpPostedFile 是密封类,因此您无法立即创建和绑定

public sealed class HttpPostedFile

HttpPostedFileBase 是抽象类。

public abstract class HttpPostedFileBase

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2015-11-07
    • 2020-05-20
    • 2020-11-08
    • 2013-10-09
    相关资源
    最近更新 更多