HttpPostedFile вернуть нулевое значение? - PullRequest
2 голосов
/ 13 января 2020

У меня есть форма, отправляющая данные POST в Action, и модель имеет поле HttpPostedFile, но когда я отправляю данные формы в Action, я просто получаю нулевое значение HttpPostedFile Field.

Это мой Модель:

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>

И этот результат, пока я пытаюсь загрузить файл изображения: enter image description here

1 Ответ

2 голосов
/ 13 января 2020

Вы должны использовать HttpPostedFileBase вместо HttpPostedFile

Примечание

Класс HttpPostedFileBase - это абстрактный класс, содержащий те же члены, что и класс HttpPostedFile. Класс HttpPostedFileBase позволяет вам создавать производные классы, подобные классу HttpPostedFile, но , который вы можете настраивать и который работает вне ASP. NET конвейера

Кроме того, HttpPostedFile является закрытым классом, поэтому вы не можете создавать и мгновенно связывать

public sealed class HttpPostedFile

Пока HttpPostedFileBase является абстрактным классом.

public abstract class HttpPostedFileBase
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...