OK, j'ai un problème où mon calcul n'a jamais lieu, comme il est supposé le faire. J'essaie de faire un calcul qui résout pour les racines d'une équation quadratique en utilisant la formule quadratique, basée sur les valeurs de a
, b
et c
entré dans une forme primitive.ASP.NET MVC Application non calculable, n00b question
Maintenant, permettez-moi de fournir le code de mon modèle, vue et contrôleur pour cette application:
Modèle:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace RootFinder.Models
{
public class QuadCalc
{
public double quadraticAValue { get; set; }
public double quadraticBValue { get; set; }
public double quadraticCValue { get; set; }
public double x1 { get; set; }
public double x2 { get; set; }
public void QuadCalculate(out double x1, out double x2)
{
//Quadratic Formula: x = (-b +- sqrt(b^2 - 4ac))/2a
//Calculate the inside of the square root
double insideSquareRoot = (quadraticBValue * quadraticBValue) - 4 * quadraticAValue * quadraticCValue;
if (insideSquareRoot < 0)
{
//There is no solution
x1 = double.NaN;
x2 = double.NaN;
}
else
{
//Compute the value of each x
//if there is only one solution, both x's will be the same
double sqrt = Math.Sqrt(insideSquareRoot);
x1 = (-quadraticBValue + sqrt)/(2 * quadraticAValue);
x2 = (-quadraticBValue - sqrt)/(2 * quadraticAValue);
}
}
}
}
Vue:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Polynomial Root Finder - Quadratic
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Quadratic</h2>
<% using(Html.BeginForm("Quadratic", "Calculate")) %>
<% { %>
<div>
a: <%= Html.TextBox("quadraticAValue") %>
<br />
b: <%= Html.TextBox("quadraticBValue") %>
<br />
c: <%= Html.TextBox("quadraticCValue") %>
<br />
<input type="submit" id="quadraticSubmitButton" value="Calculate!" />
<br />
<p><%= ViewData["Root1"] %></p>
<p><%= ViewData["Root2"] %></p>
</div>
<% } %>
</asp:Content>
Controller:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using RootFinder.Models;
namespace RootFinder.Controllers
{
public class CalculateController : Controller
{
//
// GET: /Calculate/
public ActionResult Index()
{
return View();
}
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Quadratic()
{
ViewData["Root1"] = "";
ViewData["Root2"] = "";
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Quadratic(QuadCalc newQuadCalc)
{
ViewData["Root1"] = newQuadCalc.x1;
ViewData["Root2"] = newQuadCalc.x2;
return View();
}
public ActionResult Quartic()
{
return View();
}
public object x1 { get; set; }
public object x2 { get; set; }
}
}
Maintenant, j'essaye de toujours travailler ceci, mais je crois que le problème peut résider dans l'assignation des valeurs entrées du formulaire, dans un nouvel objet pour le calcul. Cela pourrait aussi être un problème étant donné que MVC prendra probablement la forme entrée une chaîne stype, au lieu d'un double, où dans mon modèle, j'effectue des calculs basés sur l'entrée étant un type double.
Je ne sais pas où faire la chaîne à double conversion si cela est même nécessaire.
Est-ce que quelqu'un voit pourquoi il y a un problème?
La page produit les éléments suivants:
x1 = 0
x2 = 0
photo de profil cool – CRice
Merci beaucoup pour ces réponses détaillées :) J'essaie d'envelopper ma tête autour de cela, et il semble produire du code vraiment propre et séparé. – Qcom
Une chose cependant, comment puis-je utiliser les variables d'instance d'une classe dans une autre classe. Comment puis-je faire référence à cette classe dans une classe différente? – Qcom