【问题标题】:I created checkboxlist, but I can't check them我创建了复选框列表,但我无法检查它们
【发布时间】:2013-06-17 00:59:37
【问题描述】:

结果是复选框列表,但是当我按下鼠标按钮时,我无法检查它们,但没有任何反应。 有什么帮助吗?

这是我在控制器中的代码

ViewBag.Message = "Select Medias";
            var MediaInfo = CampaignManagementService.GetMedias((string)Session["ticket"]);
            List<MediaList> items = new List<MediaList>();
            foreach (var element in MediaInfo)
            {
                items.Add(new MediaList() { ID = element.Key, Name = element.Value });
            }
            ViewData["list"] = items;

这是我的代码

<fieldset>
     <legend>@ViewBag.Message</legend>
     @{
         foreach (var item in ViewData["list"] as List<MediaList>)
         {
             <div class="form-horizontal well">
                 <div class="control-group">
                     <div class="controls">
                         <div class="checkbox-group">
                             <div class="adform-checkbox pull-left" tabindex=@item.ID></div>
                             <label>@item.Name</label>
                         </div>
                     <input class="input-small" type="text" id="input"> 
                     </div>
                 </div>
             </div>
         }
         <button type="submit" class="btn btn-success">Create Tag</button>

     } </fieldset>

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 checkbox


    【解决方案1】:

    您的表单标签在哪里? 没有它,任何地方都不会发布任何内容。

    添加:

    @using (Html.BeginForm())
    {
        foreach (var item in ViewData["list"] as List<MediaList>)
            {
                <div class="form-horizontal well">
                    <div class="control-group">
                        <div class="controls">
                            <div class="checkbox-group">
                                <div class="adform-checkbox pull-left" tabindex=@item.ID></div>
                                <label>@item.Name</label>
                            </div>
                        <input class="input-small" type="text" id="input"> 
                        </div>
                    </div>
                </div>
            }
            <button type="submit" class="btn btn-success">Create Tag</button>
    }
    

    【讨论】:

    • 仍然无法检查/选择它们
    【解决方案2】:

    这种创建复选框的方法看起来不标准:

    <div class="checkbox-group">
        <div class="adform-checkbox pull-left" tabindex=@item.ID></div>
        <label>@item.Name</label>
    </div>
    

    您是否尝试过改用Html.CheckBox()?这将为复选框呈现正确的输出,例如

    &lt;input type="checkbox" value="true" /&gt;

    所以你可以试试

    <div class="checkbox-group">
        @Html.CheckBox(@item.ID)
        <label>@item.Name</label>
    </div>
    

    编辑:

    当我使用复选框时,我倾向于执行以下操作。在我的视图模型类中,我有一组强类型项:

    public class MyViewModel
    {
        public MyViewModel()
        {
            Items = new List<CheckBoxItem>();
            Items.Add(new CheckBoxItem { Id = 23, Text = "Hello" });
        }
    
        public IList<CheckBoxItem> Items { get; set; }
    }
    
    public class CheckBoxItem
    {
        public int Id { get; set; }
        public bool Checked { get; set; }
        public string Text { get;set; }
    }
    

    以上内容仅用于演示目的。接下来,在视图中,我这样做:

     for (int idx = 0; idx < Model.Items.Count;idx++ )
        {
            @Html.HiddenFor(m => m.Items[idx].Id)
            @Html.CheckBoxFor(m => m.Items[idx].Checked)<label>@Model.Items[idx].Text</label>
        }
    

    那么当你发布表单时,

    [HttpPost]
    public ActionResult Index(MyViewModel viewModel)
    {
        // viewModel.Items will contains the checkbox items.
    }
    

    【讨论】:

    • 编译器错误消息:CS1928:“System.Web.Mvc.HtmlHelper”不包含“CheckBox”的定义和最佳扩展方法重载“System.Web.Mvc.Html”。 InputExtensions.CheckBox(System.Web.Mvc.HtmlHelper, string)' 有一些无效参数
    • 错误是什么?我添加了一个扩展示例,说明我如何处理可能对您有所帮助的复选框。
    猜你喜欢
    • 2020-01-15
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 2020-09-28
    • 2020-04-15
    • 2013-07-11
    相关资源
    最近更新 更多