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)