我正在尝试简单地上传图像,但我控制器中的HttpPostedFileBase始终保持为空。
以下是页面:
<% using(Html.BeginForm("AddPicture","Album",FormMethod.Post,new{enctype= "multipart/form-data" }))
{ %>
<%: Html.ValidationSummary(true) %>
<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>
Upload Image: <input type="file" name="File1" />
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
以下是该页面的控制器:
[HttpPost]
public ActionResult AddPicture(Guid id, PictureModel model, HttpPostedFileBase File1)
{
try
{
if (ModelState.IsValid)
{
var file = Request.Files[0];
try
{
Guid albumid = id;
if (File1 != null)
{
.....
任何人都可以指导我有什么问题吗?我尝试了一切,但没有结果
答案 0 :(得分:0)
更改此行:
Upload Image: <input type="file" name="File1" id="File1" />
并改变这一点:
public ActionResult AddPicture(Guid id, PictureModel model, HttpPostedFile File1)
答案 1 :(得分:0)
这里要注意的一些事情可能是错误的,或者没有正确的方法:
应该设置表单中的Guid id在哪里。 Html.Hidden(yourid);
或Html.HiddenFor(model => model.id);
&lt; - 确保先将模型设置为后者,例如:
public ActionResult Index(){
PictureModel p = new PictureModel();
p.id = Guid.NewGuid();
return View(p);
}
对dropdownList使用正确的方法,你的映射也是错误的:
正确的方法是使用:
DropDownListFor(model => model.PrivacyTypeID, model => model.selectListOfPrivacyTypes, "-- Select Privacy Type --");
如果你确实想使用dropdownlist方法,那么你应该使用名称PictureModel.PrivacyTypeID
代替PrivacyTypeID
来让映射正常工作
我不确定它是否会解决文件处理为null的问题,但它肯定会是更好的代码。