上传图片MVC始终为null

时间:2013-04-19 10:10:48

标签: asp.net-mvc file-upload httppostedfilebase

大家好我想上传一个简单的图片但是HttpPostedFileBase总是保持为空。这是我的代码,我不知道我做错了什么。

这是我在设计视图中的代码:

    
<fieldset>
    <legend>PictureModel</legend>

    <div class="editor-label">
        <%: Html.LabelFor(model => model.PrivacyTypeID) %>
    </div>
    <div class="editor-field">
        <%: Html.DropDownList("PrivacyTypeID", null, new { name = "PrivacyTypeID", title = "Please select privacy type.", id = "PrivacyTypeID" }) %>
        <%: Html.ValidationMessageFor(model => model.PrivacyTypeID) %>
    </div>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.File1) %>
    </div>
    <div class="editor-field">
        **<input type="file" name="File1" />**
        <%: Html.ValidationMessageFor(model => model.File1) %>
    </div>        
    <div class="editor-label">
        <%: Html.LabelFor(model => model.Description) %>
    </div>

这是我控制器中的代码:

public ActionResult AddPicture(Guid id,PictureModel model,HttpPostedFileBase File1)         {             尝试             {

            if (ModelState.IsValid)
            {
                try
                {
                    Guid albumid = id;

                    if (File1 != null)
                    {
                        var physicalPath = Path.Combine(Server.MapPath("~/Gallery"), System.IO.Path.GetFileName(File1.FileName));
                        File1.SaveAs(physicalPath);
                        PicturesBL pictures = new PicturesBL();

任何人都可以告诉我这是什么问题吗?

2 个答案:

答案 0 :(得分:1)

  

任何人都可以告诉我这是什么问题吗?

您显示的代码没有任何问题。我怀疑问题来自于您使用AJAX调用提交此表单而不是正常提交​​。但是如您所知,您无法使用AJAX上传文件。这就是你的代码无效的原因。如果您想使用AJAX上传文件,可以使用一些客户端插件,例如UploadifyFine uploader。这也可以使用新的File API在HTML5中本地完成。当然,这只适用于支持它的现代浏览器。如果您需要支持旧版浏览器,一些可用的客户端上传插件可能会对您有所帮助。

答案 1 :(得分:1)

这也让我发疯了。几小时后我才意识到,

@Scripts.Render( "~/bundles/jquerymobile")
_Layout.cshtml中的

导致了这个问题。当注释掉时,上传工作。

有关详细信息,请参阅http://forum.jquery.com/topic/jquery-mobile-seems-to-clobber-ability-to-upload-files-via-forms

在我的表单中添加

data_ajax="false"
属性解决了这个问题。