0

私は以前に 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 を割り当てようとしているビュー ページを参照しています。これを回避する方法がよくわかりません。

また、ビュー クラス内に数値ロジックを配置するのは悪い習慣ですか、それともコントローラー クラス内でこれを行う方がよいでしょうか?

4

1 に答える 1

1

モデルが null であるため、エラーが発生しています。

厳密に型指定されたビューを使用すると、そのエラーは発生しませんが、 ではなく を記述したため@Model@modelビューは厳密に型指定されていません。

于 2012-07-01T12:38:24.477 に答える