为什么我的httppostdfilebase总是空的
本文关键字:我的 httppostdfilebase 为什么 | 更新日期: 2023-09-27 18:06:50
看起来和其他问题类似,但他们遇到的所有问题都是HTML中的input type="file"名称和控制器中的参数名称之间的命名不匹配。我已经检查和重新检查了很多事情很多次,但仍然HttpPostedFileBase的值总是返回为空,这导致控制器中的NullReferenceException。代码如下:-HTML代码:
@using (Html.BeginForm(new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Please Fill in the following details and Upload your Design Pic</legend>
<div class="editor-label">
@Html.LabelFor(model => model.chest)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.chest)
@Html.ValidationMessageFor(model => model.chest)
</div>
<p>
<label for="file">Design File Pic:</label>
<input type="file" name="file" />
</p>
<p>
<input type="submit" value="Order" />
</p>
在控制器: [HttpPost]
[Authorize]
public ActionResult Index(DesignOrder order, HttpPostedFileBase file)
{
string fileurl=null;
if (file.ContentLength > 0) {
fileurl = Path.Combine("../../Images/UserUploads",User.Identity.Name + file.FileName);
file.SaveAs(fileurl);
}
}
错误出现在if(file.ContentLength>0)—NullreferenceException.
因为Html.BeginForm(object)
是RouteValues
,而不是元素属性。您需要对属性使用更大的重载。试试这个:
Html.BeginForm("action", "controller", null, FormMethod.Post, new { enctype = "multipart/form-data" })
看这里我的意思:http://msdn.microsoft.com/en-us/library/dd470793(v=vs.108).aspx