0

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' にキャストできません

ハードコーディングによって文字列値を渡すだけで、メソッドは期待どおりに保存されるため、問題はこれらを適切な形式に変換することだけです。これを行うための最善のアプローチは何ですか、またはステップがありませんか?

4

1 に答える 1

1

このスニペットを変更

  Convert.ToInt32(participationpoints), Convert.ToInt32(contenttypeid)

これに

  Convert.ToInt32(participationpoints[0]), Convert.ToInt32(contenttypeid[0])
于 2013-07-16T19:50:44.383 に答える