获取一个新的(按用户)填充列表框的列表

时间:2013-01-29 09:13:12

标签: razor asp.net-mvc-4 listbox

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. 还有其他任何建议吗?

1 个答案:

答案 0 :(得分:0)

由于你的问题不是那么清楚,很难说出具体的问题。你应该找出究竟是什么问题。试着找到以下事实的答案:

  1. 检查你的数据绑定model.ColumnsToCreateTable。
  2. 如何从索引页面调用aboutModel不清楚,在填充模型之前初始化aboutmodel一次。
  3. 调试并检查您的重定向到应填充ColumnsToCreateTable的位置。
  4. 检查以下链接以获取有关列表框数据绑定的更多信息。 bind ListBoxFor with model

    你应该尝试使用htmlHelperClass轻松绑定它。