大家好,我正在尝试上传一个简单的图像,但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上传文件,你可以使用一些客户端插件,比如Uploadify
或Fine 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属性。