1

asp .net mvc 4.0、vs10、razorview

これは私のリストボックスです:

 <div class="editor-list-field">
      <select name="lbToCreateTable" class="clsToCreateTable" id="idToCreateTable" style="width:150px" size="8" multiple="multiple" >
             @if(Model.ColumnsToCreateTable != null)
             {
                  <option>@Model.ColumnsToCreateTable;</option>
             }
       </select>
 </div>

私のコントローラー:

 public ActionResult About(AboutModel model, string btnTestMail, string btnSendMail, string lbToCreateTable)
    {
        try
        {
            if (btnTestMail != null)
            {
                List<string> lstTableCreateCols = new List<string>();
                try
                {
                    if (Request.Form["lbToCreateTable"].ToString().Length > 0)
                    { }

                    HtmlString hs = new HtmlString(model.Content);
                    if (model.TableCreate)
                    {
                        if (hs.ToString().Length > 0 && model.CompanyName != "" && model.MailSubject != "")
                        {
                            CM.CreateMailBody(model.CompanyName, model.MailSubject, hs);
                        }
                    }

                    else
                    {
                        if (hs.ToString().Length > 0 && model.CompanyName != "" && model.MailSubject != "" && model.ColumnsToCreateTable != null)
                        {
                            List<string> lstColumnsToCreateTable = new List<string>();
                            foreach (SelectListItem str in model.ColumnsToCreateTable)
                            {
                                lstColumnsToCreateTable.Add(str.Selected.ToString());
                            }
                            CM.CreateMailbodyWithTable(model.CompanyName, model.MailSubject, hs, lstColumnsToCreateTable);
                        }
                    }
                }

                catch { }
            }
            else if (btnSendMail != null)
            { 

            }
        }
        catch { }
        try
        {
            if (btnTestMail == null && btnSendMail == null)
            {

                if (Session["CompanyName"].ToString().Length > 0)
                {
                    RedirectFromHomeToAbout(model);
                }
            }

        }
        catch { }
        return View(model);
    }

私のモデル:

[Required]
    [DataType(DataType.Text)]
    public string CompanyName { get; set; }

    [Required]
    [DataType(DataType.Text)]
    public string MailSubject { get; set; }

    public List<string> TableColumn { get; set; }

    public bool IsChecked { get; set; }

    public List<string> ColumnsToCreateTable { get; set; }

    public bool TableCreate { get; set; }

    [Display]
    [DataType(DataType.Text)]
    public string Message { get; set; }

    [Required]
    [DataType(DataType.Html)] 
    [AllowHtml]
    public string Content { get; set; }

    [DataType(DataType.EmailAddress)]
    public string EmailAddress { get; set; }

私のモデルで Model.ColumnsToCreateTable = null; を取得している理由

事業内容 :

ビューが読み込まれると、このリストボックスは空白になります。このビューには、正しく入力された別のリストボックスがあります。ListBoxToCreateTable (最初は空白でした) にデータを入力します。フォームを送信すると、他のすべてのデータとともに、このリスト (新しく入力されたリストボックスのリスト) がコントローラーに送信されます。そして、私はこれで多くのことをしなければなりません。

質問 :

  1. どうすればこの問題を解決できますか?
  2. これはこれを行う正しい方法ですか?
  3. 他の提案はありますか?
4

1 に答える 1

0

あなたの問題はそれほど明確ではないので、具体的なことを言うのは難しい. 正確に何が問題なのかを見つける必要があります。次の事実の答えを見つけてみてください。

  1. model.ColumnsToCreateTable のデータバインディングを確認してください。
  2. aboutModel がインデックス ページからどのように呼び出されるかは明確ではありません。モデルにデータが入力される前に、aboutmodel を一度初期化してください。
  3. リダイレクトから、ColumnsToCreateTable を設定する場所までデバッグして確認します。

次のリンクをチェックして、リストボックスのデータバインディングに関する知識を深めてください。 ListBoxFor をモデルにバインドする

簡単にバインドするには、htmlHelperClass を試してください。

于 2013-01-30T06:43:17.933 に答える