2016-09-21 2 views
0

ich bin neu in mvc. Ich versuche, Bedingungen zu verwenden, als ob sonst in meiner "Ansicht", aber es wirft einen Objektreferenzfehler bei "Model.sayHello".Modell ist null in mvc aspx view

<%@ 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> 

Controller:

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

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

Modell:

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

    public void InitializePage() 
    { 
    } 
} 

Warum mein Modell als null zurückkehrt?

+0

Haben Sie auch das Projekt verwenden Razor konfiguriert? Der andere Code in der Ansicht ('<%... %>') verwendet ASPX –

+0

Sie haben zwei Syntax hier zu kombinieren –

+1

Ich denke, Ihre Ansicht verwendet nicht Rasierer View Engine es ist mit alten aspx view engine .. Versuchen Sie also <% %> anstelle von @. –

Antwort

0

Sie erhalten diesen Fehler, weil das Modell in der Controller-Methode nicht initialisiert wird. Für HttpGet Controller-Aktionen sollte das Modell im Initialisierungsstatus sein, bevor es an view übergeben wird.

Erklären Sie Ihre Controller-Methode wie folgt aus -

[HttpGet] 
public ActionResult Index() 
{ 
    myMVCMaster model = new myMVCMaster(); 
    model.InitializePage(); 
    return View(model); 
} 
Verwandte Themen