Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 视图返回空模型_C#_Asp.net_Asp.net Mvc_Model View Controller - Fatal编程技术网

C# 视图返回空模型

C# 视图返回空模型,c#,asp.net,asp.net-mvc,model-view-controller,C#,Asp.net,Asp.net Mvc,Model View Controller,我刚刚接触ASP.NET MVC,目前正在尝试解决一个无法解决的问题: 我正在尝试从数据库加载currentArea,并从中创建currentArea对象,如下所示: //My view ("PlayGame") @model SE2_S2P2_opdracht.Models.CurrentArea <html> <body> <div style="position:absolute; margin-top:8%; background-

我刚刚接触ASP.NET MVC,目前正在尝试解决一个无法解决的问题:

我正在尝试从数据库加载currentArea,并从中创建currentArea对象,如下所示:

  //My view ("PlayGame")
 @model SE2_S2P2_opdracht.Models.CurrentArea     

<html>
<body>    
<div style="position:absolute; margin-top:8%; background-color:dimgrey; border:solid thin; border-color:darkgrey; width:59.45%; height:20%; opacity: 0.9">
 @if (Model.area.GoNorth(Model.area.NorthMap))
      {
            using (Html.BeginForm("NextArea", "Game", new { direction = "North" }, FormMethod.Post))
            {

            <div style="position:absolute;top:8%; left:7%;">

                @Html.HiddenFor(m => m.area)
                @Html.HiddenFor(m => m.player)
                <input id="submit" type="submit" value="Go North" class="btn" />
            </div>
            }
        }
</div>    
</body>
</html>
按下按钮后,我得到一个空引用,表示我的CurrentArea(传递给控制器)为空。但是,它确实读取我的方向字符串

我的CurrentArea类只是一个包装器

public class CurrentArea
{
    public Area area { get; set; }
    public Player player { get; set; }
    public Enemy enemy { get; set; }

    public CurrentArea()
    {

    }

    public CurrentArea(Area area, Player player)
    {
        this.area = area;
        this.player = player;
    }
我确保所有必需的类属性上也有“{get;set;}”。(至少是我在所需构造函数中使用的那些)


我想我错过了一些更有经验的程序员可以立即发现的东西。(通过使用@html.hiddenfor()我可以传递某些类对象/属性而不显示它们,对吗?

@html.hiddenfor
只呈现一个

因此,如果您想要发布一个复杂的对象,请确保为该对象的所有属性渲染隐藏字段,这些属性将被发回。我不知道你的
区域
对象是什么样子,但大致如下:

@model CurrentArea 

@* post back the properties of CurrentArea.area we are interested in *@
@Html.HiddenFor(m => m.area.Name)
@Html.HiddenFor(m => m.area.Id)
@Html.HiddenFor(m => m.area.Coordinates.X)

@* post back the properties of CurrentArea.player ... *@
@Html.HiddenFor(m => m.player.Name)

另请参见。

您能看到实际发布的内容吗?调试器显示我的所有“CurrentArea”属性都返回为null。不过,问题现在已经解决了。:)这为我解决了问题。事后看来,这样想听起来也很合乎逻辑。谢谢你帮助我!
@model CurrentArea 

@* post back the properties of CurrentArea.area we are interested in *@
@Html.HiddenFor(m => m.area.Name)
@Html.HiddenFor(m => m.area.Id)
@Html.HiddenFor(m => m.area.Coordinates.X)

@* post back the properties of CurrentArea.player ... *@
@Html.HiddenFor(m => m.player.Name)