0

私はその問題について多くの回答を検索しましたが(バグだと言う人もいます)、どこに問題があるのか​​ わかりません。すべてのコードをクリーンアップしましたが、ビューを取得したときにまだエラー メッセージが表示されます。行ごとにデバッグですべてが正常に機能します。でも結局YSOFD…

これが私のコードです:

コントローラ

    [HttpPost]
    public ActionResult Insert(FormCollection formCollection)
    {
        ViewBag.Tema = (new tema()).Css;

        //Pega dados do formulário
        foreach (string _formData in formCollection)
        {
            ViewData[_formData] = formCollection[_formData];
        }


        GameViewModel selectJogo = new sjnj.Models.GameViewModel();


            string sqlJogo = "SELECT id,nome FROM Jogo where nome like '%" +            ViewData["formNomeGame"].ToString() + "%' ORDER BY NOME";
            DataTable dtBuscajogo = new DataAccess("mjnj").ExecuteDataTable(sqlJogo);
            selectJogo.selectListajogo = new System.Data.DataTable();
            selectJogo.selectListajogo.Columns.Add("id");
            selectJogo.selectListajogo.Columns.Add("nome");

            selectJogo.selectListajogo.Rows.Add("#", "Selecione...");

            if (dtBuscajogo.Rows.Count > 0)
            {
                for (int i = 0; i < dtBuscajogo.Rows.Count; i++)
                {
                    selectJogo.selectListajogo.Rows.Add(dtBuscajogo.Rows[i]["id"], dtBuscajogo.Rows[i]["nome"]);
                }
            }
            else
            {
                ViewBag.MensagemError = "Nenhum jogo encontrado";
            }

    return View("Insert",selectJogo);

モデル - 私はすべてにコメントしたことに注意してください

namespace sjnj.Models
{
public class GameViewModel
{
    #region Inserir
    //[Display(Name = "Adcionar jogo a sua coleção")]
    //public string lblAdcionarJogo { get; set; }
    //[Display(Name = "Digite o nome do jogo")]
    //public string lblDigiteJogo { get; set; }
    //[Display(Name = "Selecione o jogo")]
    //public string lblSelecioneJogo { get; set; }

    //[Display(Name = "descrição do jogo selecionado")]
    //public string descrJogoSelecionado { get; set; }
    //[Display(Name = "Jogo Selecionado")]
    //public string nomeJogoSelecionado { get; set; }

   // [Display(Name = "Saiba mais")]
   //public string saibaMaisSele { get; set; }

   //[Display(Name = "Jogo digitado pelo usuario")]
   //public string formNomeGame  { get; set; }

    //[Display(Name = "Lista dos jogos")]
   // public DataTable selectListajogo { get; set; }
    #endregion
}
}

私の見解

@model sjnj.Models.GameViewModel

@{
    Layout = "~/Views/Shared/_Home.cshtml";
}

そして、それがエラーを出している私の唯一の見解です。ビューを宣言してデータを入力する場合のみ。

編集:明示的なエラー

ディクショナリに渡されたモデル アイテムのタイプは「sjnj.Models.RegisterViewModel」ですが、このディクショナリにはタイプ「sjnj.Models.HomeViewModel」のモデル アイテムが必要です。

4

1 に答える 1

0

エラーが発生しました。

私のMasterPageもモデルを使用していました。マスターページ(レイアウト)を呼び出すと、モデルが使用され、別のモデルが台無しになったビューが呼び出されます(何が起こるか正確にはわかりません.

そのため、解決策は、マスター ページの動的部分 (この場合はユーザー メニュー) のためだけに別のビューを作成することです。

正確な方法はわかりませんが、エラーの場所はわかっています。

于 2013-02-08T13:03:56.353 に答える