Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/163.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 Mvc - Fatal编程技术网

C# 将键值对传递给控制器

C# 将键值对传递给控制器,c#,asp.net-mvc,C#,Asp.net Mvc,我已经看到了一些可能的解决方案,但它们在我看来非常混乱。有没有人对此有一个简单的解决方案 型号: public class MyClass { public KeyValuePair<int,string> Field { get; set; } } @model WebApplication1.Models.MyClass @using (Html.BeginForm("MyMethod", "Home", FormMethod.

我已经看到了一些可能的解决方案,但它们在我看来非常混乱。有没有人对此有一个简单的解决方案

型号:

 public class MyClass
    {       
        public KeyValuePair<int,string> Field { get; set; }
    }
@model WebApplication1.Models.MyClass

@using (Html.BeginForm("MyMethod", "Home", FormMethod.Post))
{       
   @Html.Hidden("Field", Model.Field);

    <input type="submit" value="Submit" />
}
public ActionResult MyMethod(MyClass input)
        {
            var x = input.Field;
            ....
        }

键-值对不会与此方法一起传递,因为它只是显示为空。将“字段”传递给控制器的最简单方法是什么

替换下面的行并尝试。如果有问题,请告诉我

@Html.Hidden("Field", Model.Field);


如果内存正常工作,它有一个键和值属性,与任何其他对象一样,它的绑定方式如下:

@Html.HiddenFor(m => m.Field.Key)
@Html.HiddenFor(m => m.Field.Value)

一个输入字段不能以这种方式表示键和值,除非您考虑使用a来管理回发的值,并使用a以模型绑定器能够理解的方式呈现输入。

以下是Brians的回答,我不得不接受我必须这样做:

类别:

public class MyClass
    {

        public KeyValuePair<int,string> Field { get; set; }
        public string FieldKey { get; set; }
        public string FieldValue { get; set; }
    }

它将变得混乱,因为我有许多我想传递回控制器的kvp,但我想这是唯一简单的方法。这不是我第一次希望能够将对象传递给控制器,我相信这不会是最后一次。也许有一天我们会在dotnet更新中得到一个好消息,我们可以更轻松地完成类似的事情。

隐藏字段的价值是什么?
Model.Field
null,还是kvp?
@Html.HiddenFor(m => m.Field.Key)
@Html.HiddenFor(m => m.Field.Value)
public class MyClass
    {

        public KeyValuePair<int,string> Field { get; set; }
        public string FieldKey { get; set; }
        public string FieldValue { get; set; }
    }
@Html.Hidden("FieldKey",Model.Field.Key)
@Html.Hidden("FieldValue", Model.Field.Value)