我將在ASP.Net MVC應用程序中爲我的用戶創建配置文件。用戶創建控制器是這樣的:在創建新模型時上傳圖像
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(UserProfileViewModel userViewModel)
{
if (ModelState.IsValid)
{
....
}
return View(userViewModel);
}
此外,每個用戶模型有幾個屬性,包括一張照片。一切都很順利,直到我想添加一個輸入字段來接受照片。
@Html.TextBoxFor(model => model.ImageUrl, new { type = "file" })
而且我在下面的字段添加到UserProfileViewModel
:
[Display(Name = "Profile Photo")]
public HttpPostedFileBase ImageUrl { get; set; }
在片段上傳照片和答案my previous question,似乎上傳的照片被認爲是一個單獨的任務。即我需要一個單獨的表格和控制器來上傳照片(like first part of this answer)。
我想知道是否有任何方法可以在一個表單中創建整個用戶配置文件並將其照片傳遞給同一個控制器(其中包括UserProfileViewModel
中的照片)?
我需要注意我不知道使用jQuery或AJAX,我想爲此任務使用標準HTML助手。
更新:我查看如下:
@model ProjectManager.Models.UserProfileViewModel
@{
ViewBag.Title = "Create";
}
<h2>@ViewBag.Title</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>User Profile</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.Description, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Age, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ImageUrl, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.ImageUrl, new { type = "file" })
@Html.ValidationMessageFor(model => model.ImageUrl)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="ثبت" class="btn btn-default" />
</div>
</div>
</div>
}
<div class="rtl text-right">
@Html.ActionLink("Back To List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
您的視圖部分的外觀如何 –
那麼您有什麼問題? –
@StephenMuecke當前文件不會發布到ViewModel,並且ImageURL在httppost上爲null。 – VSB