私はasp mvc 5に写真をアップロードする必要があります。Fillモデル私がHttpPostedFileBaseを使うとき
でも画像を選択するとThe UserPhoto field is required.
に表示されます。
この私のコード:
public async Task<ActionResult> Register(RegisterViewModel model, HttpPostedFileBase pic)
{
if (ModelState.IsValid)
{
if (pic != null)
{
pic = Request.Files[0];
var ext = System.IO.Path.GetExtension(pic.FileName);
if (ext == ".jpg" || ext == ".png" || ext == ".jpeg")
{
string filename = model.Name + model.PhoneNumber + ext;
pic.SaveAs(@"~/Image/" + filename);
model.UserPhoto = filename;
}
}
var user = new ApplicationUser { Name = model.Name, Family = model.Family, PhoneNumber = model.PhoneNumber, UserName = model.Email, Email = model.Email};
user.UserPhoto=model.UserPhoto;
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
HttpPostedFileBase pic
は値ではなく、モデルがnullである必要があります。
どうすればこの問題を解決できますか?
の形式名はpicですが、un controller nameはuserphotoです。ありがとうございます。 – Kianoush
いいえコントローラでは、その名前は 'pic'です。それにもかかわらず、フォームとアクションのパラメータ/モデルのプロパティ名が一致しなければなりません。値を 'UserPhoto'に入れるには、フォームの入力内容に' UserPhoto'という名前を付ける必要があります。 –