2016-09-21 8 views
0

私はmvcを初めて使用しています。私は "ビュー"で他の場合のような条件を使用しようとしていますが、 "Model.sayHello"にオブジェクト参照エラーがスローされます。モデルはnullですmvc aspxビュー

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<myMVC.Models.myMVCMaster>" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<title></title> 
</head> 
<body> 
<div> 
    <% using (Html.BeginForm("Index", "myMaster", FormMethod.Post, new { id = "SubmitForm" })) 
     { %> 
    <%: Html.ValidationSummary(true)%> 
    <% if(Model.sayHello) { 
     <div>Hello world!</div> 
    <% } 
     } %> 
</body> 
</html> 

コントローラー:

public class myMasterController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index(myMVCMaster model) 
    {    
     model.InitializePage(); 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(myMVCMaster model, string Command) 
    { 
    } 
} 

モデル:

public class myMVCMaster 
{ 
    private bool _sayHello = false; 
    [System.ComponentModel.DefaultValue(false)] 
    public bool sayHello{ get { return _sayHello; } set { _sayHello = value; } } 

    public void InitializePage() 
    { 
    } 
} 

はなぜモデルがnullとして戻っていますか?

+0

は、あなたも、カミソリを使用するプロジェクトを構成していますか?ビューの他のコード(<%... %>)は、ASPX –

+0

を使用しています。ここでは2つの構文を組み合わせています。 –

+1

あなたのビューは、古いaspxビューエンジンを使用しているかみそりビューエンジンを使用していないと思うので、@の代わりに<% %>を使用してみてください。 –

答えて

0

コントローラーメソッドでモデルが初期化されていないため、このエラーが発生しています。 HttpGetコントローラーアクションの場合、モデルはviewに渡される前に初期化状態である必要があります。

このようなあなたのコントローラメソッドを宣言 -

[HttpGet] 
public ActionResult Index() 
{ 
    myMVCMaster model = new myMVCMaster(); 
    model.InitializePage(); 
    return View(model); 
} 
関連する問題