HttpPostedFileBase возвращает null моему контроллеру

#c# #asp.net-mvc #asp.net-mvc-4 #entity

#c# #asp.net-mvc #asp.net-mvc-4 #сущность

Вопрос:

Привет, ребята.Я пытаюсь получить 3 изображения от пользователя, поэтому моя модель выглядит примерно так :

 namespace DomainClass
{
    using System;
    using System.Collections.Generic;
    using System.Web.Http;
    public partial class CompanyMember
    {
        public CompanyMember()
        {
            this.Proficiencies = new HashSet<Proficiency>();
        }

        [DisplayName(" شناسه")]
        public int Id { get; set; }

        [DisplayName("عکس")]
        public string ImageUrl { get; set; }

        [DisplayName("کارت ملی")]
        public string IntCartCopy { get; set; }

        [DisplayName("شناسنامه")]
        public string IdentityCartCopy { get; set; }

                [System.ComponentModel.DataAnnotations.Schema.NotMapped]
        public HttpPostedFileBase ImgFileImageUrl { get; set; }
                [System.ComponentModel.DataAnnotations.Schema.NotMapped]

        public HttpPostedFileBase ImgFileIntCartCopy { get; set; }
                [System.ComponentModel.DataAnnotations.Schema.NotMapped]

        public HttpPostedFileBase ImgFileIdentityCartCopy { get; set; }


        public virtual Company Company { get; set; }
        public virtual ICollection<Proficiency> Proficiencies { get; set; }
    }
  

Итак, на мой взгляд, чтобы получить представление, я создаю 3 входных тега следующим образом :

 @model DomainClass.CompanyMember

@{
    ViewBag.Title = "اضافه کردن اعضاء";
}
@using (Html.BeginForm("Create", "CompanyMember", FormMethod.Post,
    new { id = "form", enctype = "multipart/form-data" }))
{
    @Html.ValidationSummary(true)
    <div class="wrapper-left">
        <div class="wrapper-top-addCompany">
            اعضاء
            <div style="float: left; padding-left: 20px;">
                <div class="divider"></div>
                <div class="buttonPossion">
                    <input type="submit" value="ذخیره اطلاعات" Class="buttonSave" />
                    @Html.ActionLink("بازگشت", "index", new {companyId = ViewBag.companyId}, new {@class = "buttonBlueLink"})
                </div>
                <div class="divider"></div>
            </div>
        </div>
                            @Html.HiddenFor(model => model.CompanyId)

        <div class="wrapper">
            <div class="wrapper-Member" style="padding-bottom: 30px; margin-bottom: 5px; width: 98%">
                <h2>
                    اضافه کردن اعضاء جدید
                </h2><br/><br/><br/>
                <div class="editor-label">
                    @Html.LabelFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Name)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Family) @Html.ValidationMessageFor(model => model.Family)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Family)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.EducationLevel) @Html.ValidationMessageFor(model => model.EducationLevel)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.EducationLevel)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.University) @Html.ValidationMessageFor(model => model.University)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.University)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Mobile) @Html.ValidationMessageFor(model => model.Mobile)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Mobile)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Telephone) @Html.ValidationMessageFor(model => model.Telephone)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Telephone)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Address) @Html.ValidationMessageFor(model => model.Address)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Address)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Email) @Html.ValidationMessageFor(model => model.Email)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Email)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.InternationalCode) @Html.ValidationMessageFor(model => model.InternationalCode)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.InternationalCode)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Field) @Html.ValidationMessageFor(model => model.Field)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Field)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Job) @Html.ValidationMessageFor(model => model.Job)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Job)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Share) @Html.ValidationMessageFor(model => model.Share)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Share)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Password) @Html.ValidationMessageFor(model => model.Password)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Password)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.ImageUrl) 
                </div>
                <div class="editor-field">
                    @Html.HiddenFor(model => model.ImageUrl)
                    <input id="imgProfile" type="file" name="ImgFileImageUrl"/>
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.IntCartCopy) 
                </div>
                <div class="editor-field">
                    @Html.HiddenFor(model => model.IntCartCopy)
                    <input id="imgIntCartCopy" type="file" name="ImgFileIntCartCopy"/>
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.IdentityCartCopy) 
                </div>
                <div class="editor-field">
                    @Html.HiddenFor(model => model.IdentityCartCopy)
                    <input id="imgIdentityCartCopy" type="file" name="ImgFileIdentityCartCopy"/>
                </div>

            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
  

но после отправки 3 столбцов HttpPostedFileBase возвращает null .в моем контроллере я проверил значение file, и все они равны нулю, почему?и мое условие if возвращает false

    public ActionResult Create(CompanyMember companyMember)
        {
            if (companyMember.ImgFileImageUrl != null amp;amp; companyMember.ImgFileIntCartCopy!=null amp;amp; companyMember.ImgFileIdentityCartCopy!=null)
            {

                saving
            }   

        }
  

С наилучшими пожеланиями

Комментарии:

1. покажите свой полный вид с формой

Ответ №1:

Опубликованные файлы доступны в

 Request.Files
  

Вы должны прочитать их и сохранить в БД с помощью действия контроллера. Для этого используйте имя ввода в качестве запроса.Например, индекс таблицы файлов:

 HttpPostedFileBase img = Request.Files["ImgFileIntCartCopy"];
if(img != null)
    img.SaveAs(path   img.FileName);