2016-08-04 6 views
-1

Imageと他のフォームの値をアップロードできるMultipartFormsがあります。フォームの値はFormCollectionプロパティを介して正当に受け取られますが、 HttpPostedFileBase Property.Iには常にnull値が表示されますが、私はフォーラムを通過しますが、どこが間違っていたのかわかりませんでした。ここでは、私がしたことはそれを通り抜けて、何が間違っていたと言ったのですか。友人に感謝します。Asp.NET MVC - FileUploadイメージの値がhttppostメソッドのnull値を示しています

enter code here 

CSHTML:

@using (Html.BeginForm("Create", "StaffRegistration", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
<input type="file" name="StaffImage" id="StaffImage" /> 
} 

コントローラ

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create(FormCollection collection,HttpPostedFileBase File) 
{ 
try 
{ 
// TODO: Add insert logic here 


StaffRegistration StaffReg = new StaffRegistration(); 

StaffReg.FirstName = collection["FirstName"].ToString(); 
StaffReg.LastName = collection["LastName"].ToString(); 
StaffReg.DateOfBirth = DateTime.Parse(collection["DateofBirth"]); 
StaffReg.Nationality = collection["Nationality"].ToString(); 
StaffReg.Gender = collection["Gender"].ToString(); 
StaffReg.MaritalStatus = collection["MaritalStatus"].ToString(); 
StaffReg.BloodGroup = collection["BloodGroup"].ToString(); 
StaffReg.StaffName = collection["StaffName"].ToString(); 
StaffReg.MiddleName = collection["MiddleName"].ToString(); 
HttpPostedFileBase file = Request.Files["StaffImage"]; 

StaffRegistrationBusSer StaffRegBusSer = new StaffRegistrationBusSer(); 
StaffRegBusSer.AddStaffReg(StaffReg,file); 

return RedirectToAction("Index"); 
} 

DataLayer

public bool AddStaffRegistraiton(StaffRegistration staffRegistration,HttpPostedFileBase File) 
{ 
staffRegistration.StaffImage = ConvertToByte(File); 

using(SqlConnection Con = new SqlConnection(ConnectionString)) 
{ 
SqlParameter paramImage = new SqlParameter(); 
paramImage.ParameterName = "@StaffImage"; 
paramImage.Value = staffRegistration.StaffImage; 
Cmd.Parameters.Add(paramImage); 
Con.Open(); 
Cmd.ExecuteNonQuery(); 

} 
return true; 
} 

ConvertToByte function: 

public byte[] ConvertToByte(HttpPostedFileBase Image) 
{ 
byte[] imagebyte = null; 
BinaryReader Reader = new BinaryReader(Image.InputStream); 
imagebyte = Reader.ReadBytes((int)Image.ContentLength); 
return imagebyte; 
} 
+0

あなたのファイル入力には 'name =" StaffImage "がありますので、POSTメソッドのパラメータは' public ActionResult Create(StaffReg model、HttpPostedFileBase StaffImage) 'と一致する必要があります。 (FormCollectionを使用する必要はありません) –

+0

ファイルをアップロードするときに、ブラウザコンソールからリクエストと応答を追加してください。 –

答えて

0

CSHTMLページ:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
     <div class="form-group"> 
      @Html.LabelFor(model => model.StaffName, new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.StaffName) 
       @Html.ValidationMessageFor(model => model.StaffName) 
      </div> 
     </div> 


     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="file" name="StaffImage" id="StaffImage" /> 
      </div> 
     </div> 
} 

実際に私が代わりに特定のアップロードfiles.Thenの、ビューレベルでマルチパート/フォームを含める必要があり、私は.cshtmlページで、次のように変更されました。さて、私のコードはうまく動作します

関連する問題