J'ai une vue qui a été échafaudée à partir d'un modèle. Je dois récupérer les valeurs des balises d'aide "editfor", faire un tas de calculs, puis renvoyer les résultats (multiples) à la vue. J'ai créé un petit exemple pour clarifier.Passer le contenu du formulaire à un contrôleur, faire des calculs, puis renvoyer plusieurs résultats
public class OpticalcTestViewModel
{
public double OD_Sphere { get; set; }
public double OD_Cylinder { get; set; }
public int Axis { get; set; }
}
Ce qui crée cet échafaudage:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>OpticalcTestViewModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.OD_Sphere, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.OD_Sphere, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.OD_Sphere, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.OD_Cylinder, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.OD_Cylinder, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.OD_Cylinder, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Axis, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Axis, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Axis, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Ceci est mon contrôleur:
public class OpticalcTestController : Controller
{
// GET: OpticalcTest
public ActionResult Index()
{
return View();
}
}
Comment puis-je obtenir les valeurs sur les cases "editfor", effectuer des calculs sur eux, puis passez les résultats de ces calculs (plusieurs résultats, pas un seul) à certaines étiquettes de la vue?
C'est une chose tellement simple dans Winforms, qui est ce que je travaille habituellement avec, mais je suis à mon esprit en essayant de trouver une réponse à cela. Il semble que les 9 000 autres résultats que je reçois des recherches concernent toujours l'écriture des données (en tant que modèle entier) dans une base de données. Cela n'aura pas de base de données. C'est juste une forme qui prend des valeurs numériques, fait des calculs et recrache des résultats. Pour plus de précision, comment extraire ces valeurs dans le contrôleur, Ajouter une sphère à un cylindre, puis ajouter un cylindre à l'axe et renvoyer les deux résultats séparément aux étiquettes (ou d'une autre manière pour les voir)?
Merci, R
Notez qu'il est parfaitement possible d'effectuer des calculs mathématiques en JavaScript, vous n'avez donc pas besoin de renvoyer les valeurs au serveur pour effectuer des calculs. Sauf si vous avez des raisons spécifiques (telles que cacher vos calculs aux concurrents) pour les mettre sur le serveur. – NightOwl888
J'ai pensé à faire cela, mais il va y avoir beaucoup de calculs et j'ai besoin d'un bon débogage et de la possibilité d'écrire des cas de test. – rmnrdi
Si vous avez besoin de faire cela sur le serveur, vous devriez utiliser ajax pour publier les valeurs et mettre à jour le DOM avec la valeur retournée pour améliorer les performances –