Загрузка файла MVC asp.net передается как ноль для просмотра модели - PullRequest
4 голосов
/ 20 августа 2010

У меня есть форма, которая загружает фотографию в мою базу данных, и я использую модель представления, чтобы помочь в этом процессе.

Просмотр модели:

public class GalleryViewModel
{
    //Members:
    public Gallery _photo                { get; set; }
    public string _title                 { get; set; }
    public string _description           { get; set; }
    public string _photographer          { get; set; }
    public HttpPostedFileBase uploadFile { get; set; }


    // Ctor
    public GalleryViewModel(Gallery photo)
    {
        _photo = photo;
    }

    public GalleryViewModel()
    {
        _photo = null;
    }
}

Когда я отлаживаю код, я вижу, что в методе post в моем контроллере вся информация из формы обновляется в модели представления, за исключением uploadFile, который имеет значение null. В форме я использую enctype = "multipart / form-data". Когда я использую свою главную страницу, uploadFile имеет значение null, но когда я использую главную страницу MVC по умолчанию, все работает нормально.

Вот моя главная страница:

<%@ Master Language="C#" MasterPageFile="~/views/Shared/GeneralMaster.master" Inherits="System.Web.Mvc.ViewMasterPage" %>

<asp:Panel ID="notifiactions" runat="server">
   <% if (ViewData["notifications"] != null)
   { %>
        <br />       
            <table width="100%">
                <tr>
                    <td align="center">
                        <div id="messages" style="width: 90%; border: solid 1px #A3A3A3">
                            <br />     
                            <%= Html.Encode(ViewData["notifications"])%>                                
                            <br /><br />
                        </div>
                    </td>
                </tr>
            </table>   
   <% } %>    
</asp:Panel>

<br />
    <table width="100%" cellpadding="0" cellspacing="0">
        <tr>
            <td width="30%" align="center"> 
                <img src="\Content\SiteDesign\wine_in_frame2.JPG" alt="lk" />
            </td>
            <td width="40%">
                <asp:ContentPlaceHolder ID="PageContent" runat="server" />
            </td>  
            <td width="30%" align="right"> 
                <img src="\Content\SiteDesign\set_with_frame.jpg" alt="Alon" />
            </td>
        </tr>
    </table>     

Вот главная страница asv.net mvc по умолчанию

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

    <div id="header">
        <div id="title">
            <h1>My MVC Application</h1>
        </div>

        <div id="logindisplay">
            <% Html.RenderPartial("LogOnUserControl"); %>
        </div> 

        <div id="menucontainer">

            <ul id="menu">              
                <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
                <li><%= Html.ActionLink("About", "About", "Home")%></li>
            </ul>

        </div>
    </div>

    <div id="main">
        <asp:ContentPlaceHolder ID="MainContent" runat="server" />

        <div id="footer">
        </div>
    </div>
</div>

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 20 августа 2010

Вы не опубликовали фактическое представление с формой, которая размещена, поэтому я могу только догадываться:

Убедитесь, что вы указали для типа формы enctype "multipart / form-data", иначе файлы не будут загружены.

<form id="form" name="form" action"controller/action" enctype="multipart/form-data">
...
</form>

или с помощью Html Helper:

<% using(Html.BeginForm("action", "controller", "POST", new { enctype = "multipart/form-data" })) {
...
<% } %>
0 голосов
/ 25 апреля 2017

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

new { enctype = "multipart/form-data" }
0 голосов
/ 23 августа 2010

Получает главную страницу, которую я использовал, наследует от главной главной страницы моего проекта.

На этой главной странице был тег <form></form>, инкапсулирующий <asp:contentholder>. удаление тегов формы решило эту проблему.

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