1

我可以弄清楚为什么它没有约束力。因此,我有一个表单,其中 ListBox 位于部分视图中,每次单击复选框以填充列表框时,我都会重新加载该表单。

我的 ModelView 的表单代码是:

                            <div class="row-fluid">
                                <div class="span3">
                                     <label>Fonction(s):</label>
                                </div>
                                <div class="span9" id="ListeFonction">                                        
                                    @Html.Partial("ListerFonction", Model)                                 
                                </div>
                            </div>


                            <div class="row-fluid">
                                <div class="span5 offset3">
                                    <div class="fonctions_container">
                                            @foreach (extranetClient.Models.Classes.FonctionContact fonction in ViewBag.Fonctions)
                                            {
                                                string coche = "";
                                                if ((@Model.ListeFonctions).Any(c => c.IdFonction == fonction.IdFonction))
                                                {
                                                    coche = "checked";
                                                }

                                                <input type="checkbox" @coche class="checkbox" value="@fonction.IdFonction" />@fonction.LibelleFonction <br />
                                            }
                                    </div> 
                                </div>
                            </div>

如您所见,我在“电子邮件”文本框之后呈现了部分视图。它的代码是:

@Html.LabelFor(contact => contact.SelectedFonctionIds, "ListeFonctions")
@Html.ListBoxFor(contact => contact.SelectedFonctionIds, new MultiSelectList(Model.ListeFonctions, "IdFonction", "LibelleFonction"), new { disabled = "disabled")

与该视图关联的模型如下所示:

    private List<int> _selectedFonctionIds;
    public List<int> SelectedFonctionIds
    {
        get
        {
            return _selectedFonctionIds ?? new List<int>();
        }
        set
        {
            _selectedFonctionIds = value;
        }
    }

    public List<FonctionContact> ListeFonctions = new List<FonctionContact>();
    public MultiSelectList ListeFonctionsSelectList
    {
        get
        {
            return new MultiSelectList(
                      ListeFonctions,
                      "IdFonction", // dataValueField
                      "LibelleFonction" // dataTextField
            );
        }
    }

    public Contact() { }

    public Contact( List<FonctionContact> listeFonctions, List<int> selectedFonctionIds)
    {
        this.ListeFonctions = listeFonctions;
        this.SelectedFonctionIds = selectedFonctionIds;
    }

    public Contact(int idContact, string nom, string prenom, string email, string telephoneFixe, string telephonePort) {
        this.IdContact = idContact;
        this.Nom = nom;
        this.Prenom = prenom;
        this.Email = email;
        this.TelephoneFixe = telephoneFixe;
        this.TelephonePort = telephonePort;
       }

    public Contact(int idContact, string nom, string prenom, List<int> selectedFonctionIds, List<FonctionContact> listeFonctions, string email, string telephoneFixe, string telephonePort)
    {
        this.IdContact = idContact;
        this.Nom = nom;
        this.Prenom = prenom;
        this.SelectedFonctionIds = selectedFonctionIds;
        this.ListeFonctions = listeFonctions;
        this.Email = email;
        this.TelephoneFixe = telephoneFixe;
        this.TelephonePort = telephonePort;
    }

但是局部视图的 ListBox 并没有与模型绑定。我很好地了解了其他信息,但列表框中没有这些信息。有人有想法吗?

4

1 回答 1

0

为什么要在这里强制使用 ListBox 的 id:

@Html.ListBoxFor(contact => contact.SelectedFonctionIds, 
   new MultiSelectList(Model.ListeFonctions, "IdFonction", "LibelleFonction"), 
   new { disabled = "disabled", **id="idFonctions"** })

ListBoxFor 助手应该为您生成 ListBox 的 id,并且 Id 应该与它应该绑定的属性相同。不应该是 SelectedFonctionIds 吗?

在您开始使用 PartialView 之前绑定是否有效?因为从您之前的问题中,我看到您有:

@Html.ListBoxFor(contact => contact.SelectedFonctionIds, Model.ListeFonctionsSelectList, new { disabled = "disabled" })

在您的视图中(即,您没有设置 id 属性)。

于 2013-08-13T09:02:35.193 回答