Question

Je suis assez nouveau pour MVC venant de windows forms et 3 architecture de niveau.

Je suis à essayer de comprendre à l'aide de la cascade dropdownlists (DDL) rempli à partir de la base de données.Im en utilisant MS SQL Server 2012, VS 2013

Actuellement, je suis le travail de l'utilisateur questionnaire auquel les utilisateurs peuvent sélectionner plusieurs réponses de DDL.Dépendent de certaines sélections j'ai besoin de changer de réponses (de nouveau DDL) sur la question suivante.

Base de données:

Table DDLStacks:

StackId | StackName
   1    | Berry
   2    | BerryColor
   3    ....

Table DDLStackContents (SCId contenu de la Pile id, l'indexation but)

SCId | StackId | GroupId | Key | Value
--------------------------------------
1 | 1 | Null | 1 | Grape
2 | 1 | Null | 2 | Avocado
3 | 1 | Null | 3 | Banana
4 | 2 | Null | 1 | Yellow
5 | 2 | Null | 2 | Green
6 | 2 | 1 | 3 | Red
7 | 2 | 1 | 4 | Orange
8...

Procédure:

   CREATE PROCEDURE [dbo].[spDLLSelect]
        @p_StackName_in VARCHAR(20),
        @p_GroupId_in Int = null
    AS 
    BEGIN
        SELECT [Key],Value FROM DDLStackContents
        WHERE StackID IN (SELECT StackId FROM DDLStacks WHERE StackName = @p_StackName_in)
        AND (GroupId = @p_GroupId_in OR @p_GroupId_in IS null) 
        Order By [Key] 
    END

Comme vous pouvez le voir DDLStacks questions, DDLStackContents détient des réponses possibles à cette question.

Si il y a un groupe, nous pouvons sélectionner les réponses de ce groupe toutes les réponses pour particulier dans la pile.

Maintenant, j'ai créé un ADO.NET modèle de Données d'Entité d'accès spDLLSelect.

Maintenant, mon fruit modèle est ce

public class FruitModel
{
    public IEnumerable<SelectListItem> BerryList { get; set; }
    public IEnumerable<SelectListItem> BerryColorList { get; set; }

    [Display(Name = "Berry")]
    public byte? Berry { get; set; }

    [Display(Name = "BerryColor")]
    public byte? BerryColor { get; set; }
}

Mon contrôleur est cela, j'ai besoin de sélectionner la couleur dépend du type de berry.Dire si Avacado sélectionner tout, si la Banane juste de groupe 1.

public class HomeController : Controller
{
    public ActionResult Index()
    {
        CherryEntities db = new CherryEntities();
        var model = new FruitModel();
        model.BerryList = new SelectList(db.spDLLSelect("Berry", null), "Key", "Value");
        //model.BerryColorList = new SelectList(db.spDLLSelect("BerryColor", null), "Key", "Value");
        //model.BerryColorList = new SelectList(db.spDLLSelect("BerryColor", 1), "Key", "Value");
        return View(model);
    }
}   

Voici mon avis:

@using (Html.BeginForm("Register2", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{

<div class="form-group">
    @Html.LabelFor(m => m.Berry, new { @class = "col-md-2 control-label" })
    <div class="col-md-10" >
        @Html.DropDownListFor(m => m.Berry, Model.BerryList, "Please Select")
    </div>
</div>

<div class="form-group">
    @Html.LabelFor(m => m.BerryColor, new { @class = "col-md-2 control-label" })
    <div class="col-md-10">
        @Html.DropDownListFor(m => m.BerryColor, Model.BerryColorList, "Please Select")
    </div>
</div>

}

C'est ma base de codage, j'ai essayé diverses méthodes pour faire ce travail, j'aimerais voir la bonne façon de le faire avec ajax FORTEMENT Tapé le code.

Peut-être en utilisant des vues partielles?toutes les pensées?

Était-ce utile?

La solution

Vous avez déjà eu un Modèle qui, de votre point de vue est fortement typé avec.Tout ce que vous devez faire est d'ajouter un événement de modification liste déroulante (pour plus d'informations, voir visée lien ci-dessous).Sur le changement de l'événement, vous pouvez charger les valeurs par la valeur sélectionnée par ex.si Berry est sélectionné, vous aurez besoin de récupérer les valeurs correspondantes pour Berry-je.e de Raisin, Avocat.

Vous pouvez charger les valeurs à l'aide de JavaScript qui est utile lorsque vous avez un grand ensemble de données.Ou vous pouvez précharger la vue avec toutes les données et dans ce cas, vous avez juste besoin de filtrer les réponses sur la base de la question sélectionnée sur l'INTERFACE utilisateur.

Pour obtenir de l'aide sur la façon de mettre cela en pratique, veuillez vous référer Une cascade de DropDownList Dans MVC 4.Vous pouvez trouver un exemple similaire en fonction de vos besoins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top