Question

J'essaie de créer un modèle d'éditeur plus "avancé" pour mon application Web MVC, mais j'ai un peu de difficulté. Avant d'expliquer, permettez-moi de montrer mon code source.

Voici le code à mon avis (en utilisant le modèle):

@Html.EditorFor(model => model.Height, "UnitTemplate", new { unitModel = Model.HeightUnit, unitType = Units.Distance })

Voici le modèle:

@{
    Layout = null;
}
@using MyProject.Models;

@{
    var unitModel = this.ViewData["unitModel"];
    var unitType = this.ViewData["unitType"] as SelectList;
}

<div class="data-group">
    <div class="editor-label">
        @Html.LabelFor(model => model)
    </div>
    <div class="option1">
        @Html.TextBoxFor(model => model)
    </div>
    <div class="units">@Html.DropDownListFor(model => unitModel, unitType, new { @class = "unit" })</div>
    <div class="validation">
        <div>@Html.ValidationMessageFor(model => model)</div>
    </div>
</div>

Comme vous pouvez le voir, j'ai une certaine valeur (dans ce cas, la hauteur) et j'ai également un type d'unité associé à cette valeur (Hauteur). Je veux pouvoir passer génériquement dans la valeur unitaire associée au modèle (car j'utilise ce modèle dans un certain nombre d'endroits) ainsi que le type d'unité (car cela peut également changer). En fin de compte, l'objectif est de permettre à l'utilisateur de se convertir rapidement entre les valeurs.

Heureusement, tout fonctionne jusqu'à ce point (conversion, population, etc.), sauf que lorsque j'économise les résultats, le UnitModel ne sauve pas dans la base de données. Quelqu'un a-t-il des suggestions sur ce que je peux faire pour faire fonctionner cela?

Était-ce utile?

La solution

Vous souhaitez probablement utiliser un modèle d'éditeur pour l'ensemble du modèle dans ce cas car ce modèle dépend de plusieurs propriétés du modèle de vue principale (Height et HeightUnit):

@Html.EditorForModel("UnitTemplate")

Et puis dans le ~/Views/Shared/EditorTemplates/UnitTemplate.cshtml modèle d'éditeur:

@using MyProject.Models;
@model MyViewModel
@{
    Layout = null;
}
<div class="data-group">
    <div class="editor-label">
        @Html.LabelFor(model => model.Height)
    </div>
    <div class="option1">
        @Html.TextBoxFor(model => model.Height)
    </div>
    <div class="units">
        @Html.DropDownListFor(
            model => model.HeightUnit, 
            Units.Distance, 
            new { @class = "unit" }
        )
    </div>
    <div class="validation">
        <div>
            @Html.ValidationMessageFor(model => model.Height)
        </div>
    </div>
</div>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top