ОК, у меня проблема, когда мои вычисления никогда не происходят, как это и должно быть. я пытаюсь сделать вычисление, которое решает корни квадратного уравнения, используя квадратную формулу, основанную на значениях a
, b
и c
, введенных в примитивной форме.
Теперь позвольте мне предоставить код для моей модели, вида и контроллера для этого приложения:
Модель:
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);
}
}
}
}
Вид:
<%@ 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>
Контроллер:
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; }
}
}
Теперь я все еще пытаюсь решить это, но я полагаю, что проблема может заключаться в присвоении введенных значений из формы в новый объект для вычислений. Это также может быть проблемой, учитывая, что MVC, вероятно, примет в форме ввода строковый стиль вместо двойного, тогда как в моей модели я выполняю вычисления на основе ввода, являющегося двойным типом.
Я не знаю, где сделать строку для двойного преобразования, если это даже необходимо, однако.
Кто-нибудь видит причину проблемы?
На странице выводится следующее:
x1 = 0
x2 = 0