Era*_*ran 5 asp.net-mvc master-pages file-upload
我有一个将照片上传到我的数据库的表单,我使用视图模型来帮助完成此过程。
查看型号:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我调试代码时,我看到在我的控制器的 post 方法中,表单中的所有信息都在视图模型中更新,除了为 null 的uploadFile。在表单中我使用 enctype = "multipart/form-data"。当我使用我的母版页时,uploadFile 为空,但是当我使用默认的 MVC 母版页时,一切正常。
这是我的母版页:
<%@ Master Language="C#" MasterPageFile="~/views/Shared/GeneralMaster.master" Inherits="System.Web.Mvc.ViewMasterPage" %>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
这是默认的 asp.net mvc 母版页
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您还没有使用发布的表单发布实际视图,所以我只能猜测:
确保您已将表单的 enctype 设置为“multipart/form-data”,否则文件将无法上传。
<form id="form" name="form" action"controller/action" enctype="multipart/form-data">
...
</form>
Run Code Online (Sandbox Code Playgroud)
或使用 Html 助手:
<% using(Html.BeginForm("action", "controller", "POST", new { enctype = "multipart/form-data" })) {
...
<% } %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2979 次 |
| 最近记录: |