上传图像MVC始终为空



大家好,我正在尝试上传一个简单的图像,但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模型,HttpPostedFileBase文件1({尝试{

            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();

有人能告诉我出了什么问题吗??

有人能告诉我出了什么问题吗??

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

这也让我抓狂。几个小时后我意识到,

@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">
属性解决了问题。

确保模型。文件1类型是HttpPostedFileBase而不是HttpPostedFile表单包含CCD_ 6属性。

最新更新