Итак, я только что экспериментировал с ASP.NET MVC, и мне действительно начинает нравиться то, как все имеет одну единственную цель (в том, что касается разделения целей между моделями, представлениями и контроллерами), но яУ меня все еще возникают проблемы с применением моих базовых знаний для практических целей.
Итак, я думал о попытке создать ASP.NET MVC-версию моего исходного полиномиального корневого искателя JavaScript.Это должно быть относительно просто.Очевидно, что это не решит для всех корней каждой степени (по крайней мере, в данный момент), но я по крайней мере пытаюсь получить Quadratic-Quartic.
Итак, у меня есть 1 контроллер в дополнение к моему HomeController
.Это называется CalculateController
и будет обрабатывать все элементы управления, связанные с любыми страницами, касающимися вычисления корней для определенного типа полинома.
Поэтому у меня есть 3 вида, по 1 для каждого из различных типовполином, Quadratic.aspx
, Cubic.aspx
и Quartic.aspx
.
Теперь я подумал, что мне понадобится модель для обработки моей «бизнес-логики» в данном случае, реальных вычислений и алгебраического вычислениякорни.
Здесь мне нужна обратная связь.
Должен ли я создать один класс Calculate?Это то, что у меня есть на данный момент.В классе я объявляю 5 различных переменных строки экземпляра (я думаю, что это правильная терминология):
public int aValue;
public int bValue;
public int cValue;
public int dValue;
public int eValue;
Они будут хранить значения каждого из терминов.Теперь, это плохая идея, учитывая, что Quadratic и Cubic не будут использовать все эти поля экземпляра?Если это так, то я мог бы просто создать отдельные классы для каждого отдельного полиномиального типа.
Хорошо, теперь я также должен получить некоторую информацию из моей формы, чтобы назначить введенные значения этим переменным.
Я немного озадачен тем, как мне следует это делать.
У меня есть форма на моем квадратичном виде:
<% using(Html.BeginForm("QuadraticForm", "Calculate")) %>
<% { %>
a: <%= Html.TextBox("quadraticAValue") %>
<br />
b: <%= Html.TextBox("quadraticAValue") %>
<br />
c: <%= Html.TextBox("quadraticAValue") %>
<br />
<input type="submit" id="quadraticSubmitButton" />
<% } %>
Очень просто, очень просто.
Теперь, как назначить эти введенные целые числа в новый объект класса Calculat
e с помощью метода Quadratic()
?
ОБНОВЛЕНИЕ:
ОКУ меня есть больше знаний, чем раньше, благодаря некоторым исследованиям, поэтому я оставлю исходный вопрос полностью выше и обновлю ниже некоторые сведения, которые я узнал:
Я собираюсь получитьотдельный класс в папке Models для каждого другого типа полинома.В настоящее время я экспериментирую с файлом QuadCalc.cs
, Модель для квадратичных полиномов.
Вот код, который у меня есть:
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 void QuadCalculate(double quadraticdAValue, double quadraticBValue, double quadraticCValue, 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 * quadraticdAValue * 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 * quadraticdAValue);
x2 = (-quadraticBValue - sqrt) / (2 * quadraticAValue);
}
}
}
}
В приведенном выше коде яполучить и установить значения форм (не совсем уверен, как сработает целая вещь от string
до double
, но мы можем побеспокоиться об этом позже xD), а затем использовать их как параметры метода, построенного вокруг ойтак известная квадратичная «формула».
Теперь, в моем Calculate
контроллере, это мой код, который применяется к квадратикам:
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Quadratic()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Cubic(QuadCalc boss)
{
return View();
}
Теперь в приведенном выше коде вместоboss
что мне здесь разместить?Я не могу оставить это просто опущенным, но я считаю, что это должно быть имя объекта?Проблема в том, что я никогда не определял объект в моей модели, я должен это делать?