私は以前に C# コンソール アプリケーションで多くの数値プログラミングを行っていたので、MVC は初めてです。最終的には、これらと同じ種類のプログラムを実行する Web アプリケーションを構築したいと考えています。私の最初の試みは困難に遭遇しました。
これは、フォームから数値を取得し、1 から 3 または 5 で割り切れるその数値までのすべての数値の合計を計算する、非常に基本的なアプリケーションです。入力に対応します:
namespace MvcDemo.Models
{
public class Values
{
public int Number { get; set; }
}
}
次に、コントローラー クラスを作成しました。
namespace MvcDemo.Controllers
{
public class HomeController : Controller
{
Values v = new Values();
public ActionResult Index()
{ return View(); }
[HttpPost]
public ActionResult Index(int number)
{
v.Number = number;
return View(v);
}
}
}
そして最後にビュー:
@Model MvcDemo.Models.Values
@{ViewBag.Title = "Home Page";}
<h1>Sum of Multiples of 3 & 5</h1>
@using (Html.BeginForm()){
@Html.TextBox("number");
<input type="submit" />
}
@{
int n;
List<int> nums = new List<int>();
int sum = 0;
if(@Model.Number!=null)
{
n = @Model.Number;
}
else
{
n = 10;
}
for (int i = 1; i < n; i++)
{
if (i % 3 == 0 || i % 5 == 0)
{
nums.Add(i);
}
}
for (int j = 0; j < nums.Count; j++)
{
sum += nums[j];
}
}
<p>The sum of the factors is: @sum</p>
これを実行しようとすると、「null 参照に対してランタイム バインディングを実行できません」という例外が発生します。これは、n を割り当てようとしているビュー ページを参照しています。これを回避する方法がよくわかりません。
また、ビュー クラス内に数値ロジックを配置するのは悪い習慣ですか、それともコントローラー クラス内でこれを行う方がよいでしょうか?