【发布时间】:2015-07-27 14:02:33
【问题描述】:
我有一个有趣的问题,在我的表单中我有这个:
<form class="form-horizontal" role="form" method="post"
action="@Url.Action("Edit", "Data")">
@Html.HiddenFor(i => i.Metadata.Name)
<input name="@Html.NameFor(i => i.RecordKey)" type="hidden" value="@Model.RecordKey" />
我已经尝试将 RecordKey 字段作为 @Html.HiddenFor 和上面的方法,对于这个我得到的值返回为:
string[] { "value" }
它返回一个单值数组,而不仅仅是直接的字符串。在模型中,RecordKey 类型为 Object,因为它在某些情况下可能是整数,而在其他情况下可能是字符串。知道为什么以这种方式发回吗?我想也许我有这个名字的双重输入,但它不在模型中的其他任何地方......
我有一个模型定义为:
public class FormModel
{
public object RecordKey { get; set; }
}
接收它的动作如下。取回数据后,FormModel 有一个数组,我使用以下内容对其进行转换。
public ActionResult Edit(FormModel model)
{
if (model.RecordKey is string[])
model.RecordKey = ((string[])model.RecordKey).First();
}
在客户端,这是您所期望的:
<input name="RecordKey" type="hidden" value="X"></input>
我不太确定为什么它首先会这样做...没有自定义模型绑定...
【问题讨论】:
-
你是如何得到这个“返回值”的?怎么装订和阅读?
-
显示您的控制器操作和自定义模型绑定器(如果有)。
-
已添加。没有自定义模型绑定。
-
你传递给视图什么值?隐藏输入的值在 HTML 中是什么样的?
-
抱歉,因为我的格式错误所以没有显示,但它显示如上。值是 X,它被发送并正确返回,但在一个数组中。名称匹配正确...
标签: c# asp.net asp.net-mvc model-binding hidden-field