HttpPostedFileBase と FormCollection をパラメーターとして投稿する HTTP Post アクションがあります。
私のコントローラーのアクションは次のとおりです。
[HttpPost]
public ActionResult NewContent(HttpPostedFileBase postedFile,string username, FormCollection form)
{
if (postedFile != null)
{
HttpPostedFileBase postedFileCopy = postedFile;
postedFileCopy.InputStream.Position = 0;
Stream stream = postedFile.InputStream;
//avm.AddContent(postedFile, stream, "jpmcfeely");
string[] name = form.GetValues("name");
string[] author = form.GetValues("author");
string[] description = form.GetValues("description");
DateTime uploaddate = DateTime.Today;//form.GetValues("uploaddate");
DateTime expirydate = DateTime.Today.AddMonths(1);//form.GetValues("expirydate");
string[] participationpoints = form.GetValues("participationpoints");
string[] contenttypeid = form.GetValues("contenttypeid");
try
{
avm.AddContent(postedFile, stream, "jpmcfeely", name.ToString(), author.ToString(), description.ToString(), uploaddate, expirydate, Convert.ToInt32(participationpoints), Convert.ToInt32(contenttypeid));
}
catch (Exception ex)
{
return RedirectToAction("Index", "Admin");
}
}
次に、次のように、フォーム コレクションの詳細を SQL ストレージ テーブルに追加するメソッドを ViewModel に用意します。
public void AddContent(HttpPostedFileBase content, System.IO.Stream stream, string userName, string name, string author, string description, string uploadDate, string expiryDate, int participationPoints, int contentType)
{
string contentUri = "";
Content newContent = new Content();
contentUri = Helpers.ContentUtils.AddContentToBlob(content, stream, "useravatar", content.FileName);
newContent.Name = name;
newContent.Author = author;
newContent.Description = description;
newContent.UploadDate = DateTime.Today;
newContent.ExpiryDate = DateTime.Today.AddMonths(1);
newContent.ParticipationPoints = 50;
newContent.ContentBlobURL = contentUri;
newContent.ContentTypeID = contentType;
this.contentRepository.Add(newContent);
this.contentRepository.SaveChanges();
}
ソリューションをビルドすると、エラーなしでコンパイルされますが、コントローラーの try ブロック内のコンテンツを保存すると、次のエラーが発生します。
タイプ 'System.String[]' のオブジェクトをタイプ 'System.IConvertible' にキャストできません
ハードコーディングによって文字列値を渡すだけで、メソッドは期待どおりに保存されるため、問題はこれらを適切な形式に変換することだけです。これを行うための最善のアプローチは何ですか、またはステップがありませんか?