大家好我想上传一个简单的图片但是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();
任何人都可以告诉我这是什么问题吗?
答案 0 :(得分:1)
任何人都可以告诉我这是什么问题吗?
您显示的代码没有任何问题。我怀疑问题来自于您使用AJAX调用提交此表单而不是正常提交。但是如您所知,您无法使用AJAX上传文件。这就是你的代码无效的原因。如果您想使用AJAX上传文件,可以使用一些客户端插件,例如Uploadify
或Fine 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"属性解决了这个问题。