Comment lier champ de saisie à editfor modèle MVC
J'ai le code javascript suivant et les champs d'entrée dans mon modèle.
script type="text/javascript">
function sum() {
var txtFirstNumberValue = document.getElementById('money1').value;
var txtSecondNumberValue = document.getElementById('money2').value;
var txtThirdNumberValue = document.getElementById('money3').value;
var result = parseFloat(txtFirstNumberValue) + parseFloat(txtSecondNumberValue) + parseFloat(txtThirdNumberValue);
if (!isNaN(result)) {
document.getElementById('Total').value = result;
}
}
</script>
<div class="form-group">
@Html.LabelFor(model => model.Total, "Total", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
<input type="text" id="Total" name="Total" />
@*@Html.EditorFor(model => model.Total)*@
@Html.ValidationMessageFor(model => model.Total)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.money1, "money1", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@*@Html.EditorFor(model => model.money1)*@
<input type="text" id="money1" onkeyup="sum();" name="money1" />
@Html.ValidationMessageFor(model => model.money1)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.money2, "money2", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@*@Html.EditorFor(model => model.money2)*@
<input type="text" id="money2" onkeyup="sum();" name="money2" />
@Html.ValidationMessageFor(model => model.money2)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.money3, "money3", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@*@Html.EditorFor(model => model.money3)*@
<input type="text" id="money3" onkeyup="sum();" name="money3" />
@Html.ValidationMessageFor(model => model.money3)
</div>
</div>
Tout cela fonctionne très bien. Lorsque je tape une valeur dans les 3 champs de l'argent de la valeur s'affiche dans le champ Total. Dans MVC si je clique sur la vue de détail, il montre tous les quatre valeurs, mais si je clique sur l'affichage modifier tous les champs sont vides. La Question est comment puis-je obtenir les valeurs de comparaître et de rester en mode édition?
OriginalL'auteur Scanner | 2014-12-31
Vous devez vous connecter pour publier un commentaire.
Bien, pour commencer votre modèle lié aux champs de saisie sont commentés:
Afin d'obtenir ces pour travailler, vous aurez besoin de dé-commentez.
Vous pourrait juste remplir manuellement votre balisage avec les valeurs de modèle, quelque chose comme ceci:
Qui doit pré-remplir que
input
avec le modèle demoney1
valeur. Si vous êtes en assumant la responsabilité de manuellement la mise en œuvre de rien d'autre que de l'intégré dans le HTML helpers de fournir pour vous. Sauf si il y a une raison de ne pas l'utiliserHtml.EditorFor()
j'imagine que ce serait la meilleure option.Est-ce le modèle , d'une valeur totale de champ? J'imagine qu'il doit, et que vous souhaitez afficher sa valeur exactement de la même manière. (Bien que je n'aurais pas lier un éditeur, car c'est une valeur calculée. Il ne devrait probablement pas être dans un élément de formulaire, juste affiché dans le balisage.) Comme pour le JavaScript "ne pas travailler" avec les éditeurs, qui sonne comme quelque chose pour une autre question entièrement. Il n'y a rien de spécial à propos de la balise émis par les éditeurs, JavaScript peut interagir avec elle comme toutes les autres balises.
J'ai ajouté un attribut de valeur dans le champ Total (<input type="text" id="ContractualWeekly" name="WeeklyRatesPayable" value="@Modèle.ContractualWeekly" />) la même chose que de l'argent 1, 2, 3 et la valeur s'affiche comme il faut mais quand je clique sur éditer à nouveau sa valeur a disparu. Je suis assez nouveau sur ce donc c'est pourquoi j'ai été un moment difficile l'obtention de la rédaction et de Javascript à coopérer, mais comme tu le dis c'est pour une autre fois.
Bien d'où vient cette valeur provient? Est-ce le modèle même ? Si il est calculé en JavaScript et non par le code serveur, vous pouvez toujours re-calculer seulement par l'exécution de JavaScript. Je ne vois vraiment pas pourquoi la valeur totale doit être un champ de saisie, il ne devrait pas être modifiable valeur sur le modèle. Si quelque chose, il serait une propriété en lecture seule (seulement un getter, pas de setter) qui retourne le total des autres champs.
Le client qui je travaille pour une demande de l'application à créer, d'éditer, de détails, de format et veut contrôler modification dans la mesure où lorsque le cliquez sur modifier tous les 4 champs sont remplis. Est-ce que parce que l'argent 1, 2, 3 sont ajoutés, de sorte que le Total atteint sa valeur qui est la raison pour laquelle aucune valeur n'affiche par Total lors de l'édition est cliqué?
OriginalL'auteur David