Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# Razor页面-模型数组始终为空_C#_Razor - Fatal编程技术网

C# Razor页面-模型数组始终为空

C# Razor页面-模型数组始终为空,c#,razor,C#,Razor,我想要一个绑定到数组的文本框,以便在表单更改时发布表单 我一直在跟踪以使其工作,但我的模型上的属性始终为空。为什么? 模型 public class TestModel { public int[] MyInts; } 控制器 public ActionResult Index(TestModel model) { if (model.MyInts == null) // <-- Always true { model.MyInts = new i

我想要一个绑定到数组的文本框,以便在表单更改时发布表单

我一直在跟踪以使其工作,但我的模型上的属性始终为空。为什么?

模型

public class TestModel
{
    public int[] MyInts;
}
控制器

public ActionResult Index(TestModel model)
{
    if (model.MyInts == null) // <-- Always true
    {
        model.MyInts = new int[] { 1, 2, 3, 4 };
    }
}
public ActionResult索引(TestModel)
{
如果(model.MyInts==null)//model.MyInts[i],则新建{onchange=“this.form.submit();”)
}

TestModel
中的
MyInts
声明为字段

相反,它必须是带有
get
set
的公共属性

将其更改为:

public class TestModel
{
    public int[] MyInts { get; set; }
}

此外,如注释中所述,控制器必须包含GET和POST
索引
操作方法

public class TestController : Controller
{
    public ActionResult Index()
    {
        var viewModel = new TestModel {
            MyInts = new [] { 1, 2, 3, 4 }
            };

        return View(viewModel);
    }

    [HttpPost()]
    public ActionResult Index(TestModel model)
    {
        if (model.MyInts == null) 
        {
            model.MyInts = new int[] { 1, 2, 3, 4 };
        }

        // ...

        return RedirectToAction("Index");
    }
}

TestModel
中的
MyInts
声明为字段

相反,它必须是带有
get
set
的公共属性

将其更改为:

public class TestModel
{
    public int[] MyInts { get; set; }
}

此外,如注释中所述,控制器必须包含GET和POST
索引
操作方法

public class TestController : Controller
{
    public ActionResult Index()
    {
        var viewModel = new TestModel {
            MyInts = new [] { 1, 2, 3, 4 }
            };

        return View(viewModel);
    }

    [HttpPost()]
    public ActionResult Index(TestModel model)
    {
        if (model.MyInts == null) 
        {
            model.MyInts = new int[] { 1, 2, 3, 4 };
        }

        // ...

        return RedirectToAction("Index");
    }
}

是否可以显示端点调用的输入json。索引是
get
而不是
Post
。默认情况下,您需要创建另一个方法来模拟表单的
Post
。如果您希望在默认情况下绑定数组,请松开空检查,并使用
返回视图(模型)
@greg将内容绑定到
Get
,即使在我的其他表单(模型没有数组)中也可以使用相同的方法。我给出了您的建议。我创建了另一个方法,相同的签名但不同的名称,但没有用。那么,您希望它做什么呢?只需在更改时更新数组?是否可以显示调用端点的输入json。索引是
get
而不是
Post
。默认情况下,您需要创建另一个方法来模拟表单的
Post
。如果您希望在默认情况下绑定数组,请松开空检查,并使用
返回视图(模型)
@greg将内容绑定到
Get
,即使在我的其他表单(模型没有数组)中也可以使用相同的方法。我给出了您的建议。我创建了另一个方法,相同的签名但不同的名称,但没有用。那么,您希望它做什么呢?只需在更改时更新阵列?谢谢,我忘记了这件蠢事!FWIW,我没有为单独的GET/POST方法烦恼,仍然有效。谢谢你,对我来说忘记是多么愚蠢的事情!FWIW,我没有使用单独的GET/POST方法,仍然有效。