Ajout d'éléments à la liste dans le modèle dynamique via ajax

J'ai le code suivant et je suis en train d'ajouter de la valeur sélectionnée pour le modèle.SelectedPayCodes liste à chaque fois que l'utilisateur effectue une sélection dans la liste déroulante et cliquer sur "Ajouter"

CONTRÔLEUR

[HttpPost]
public PartialViewResult AddPayCode(ReferralModel model, string SelectedPayCode)
{
    var payCode = _employeeService.GetPayCodeById(Convert.ToInt32(SelectedPayCode));

    model.Add(payCode); 
    return PartialView("_PayCodesPartial",model);
}

MODÈLE

public class ReferralModel
    {
        public Customer Customer { get; set; }
        public Employee Employee { get; set; }
        public List<PayCode> PayCodes { get; set; } //List of paycodes
        public List<PayCode> PayCodesList { get; set; } //List of 'selected' paycodes
        public SelectListItem SelectedPayCode { get; set; } //current selected paycode

        public Referral Referral { get; set; }

        public ReferralModel()
        {
            PayCodesList = new List<PayCode>();
        }

        //Step 3 - Add Paycode is done here.
        public void Add(PayCode payCode)
        {
            PayCodesList.Add(payCode);
        }
    }

VUE de Créer.cshtml

    @using (Ajax.BeginForm("AddPayCode", "Referral",
    new AjaxOptions()
    {
        HttpMethod = "POST",
        InsertionMode = InsertionMode.InsertAfter,
        UpdateTargetId = "PayCodes",
    }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary()
        <!-- payCodes input-->
        <div class="control-group col-lg-6">
            <label class="control-label">Product</label>
            <div class="controls">
                <!-- Step 1 + Choose PayCode Here -->
                @Html.DropDownListFor(model => model.SelectedPayCode, new SelectList(Model.PayCodes.ToList(), "Id", "Description"), "- Select -")
                <input type="submit" value="Add" />

            </div>
        </div>

        <!-- pay codes list -->
        <div id="PayCodes">
        </div>
    }

VUE - _PayCodesPartial.cshtml

@model Zenwire.Models.ReferralModel

@if (Model.PayCodesList != null)
{
    foreach (var item in Model.PayCodesList)
    {
        string.Format("{0} - {1}", item.Code, item.Description);
    }
}

Le problème semble être à chaque fois qu'un nouvel élément est ajouté la liste est à nouveau vide et ne pas le conserver sélection précédente.

  • Vous n'êtes pas en ajoutant les valeurs de la liste actuelle de la vue du modèle. Vous êtes juste l'ajout de la dernière valeur.
  • Comment puis-je résoudre ce problème?
  • Vous pourriez enregistrer les valeurs dans la base de données.
  • Je suis en train de construire une liste d'abord parce que le formulaire principal sur la page de postes à la base de données et j'ai besoin de la référence ID de la ligne insérée lien vers la liste des paycodes... Si je stocker les paycode à la base de données j'ai besoin d'un moyen de relier entre eux, tout comme ils sont ajoutés à la référence qui sera créée automatiquement.
InformationsquelleAutor devfunkd | 2013-11-04