我有一个简单的对象
public class SomeObject
{
public Int32 id { get; set; }
public string name { get; set; }
}
在强类型视图中,我让用户编辑SomeObject.name,当发布表单时,接收方法在FormCollection中看不到SomeObject.id(它确实看到SomeObject.name)。我是否需要在表单中实际放置每个对象属性才能在发布表单时访问它们?
什么是最佳做法,我应该为每个属性插入隐藏字段,我不打算让用户编辑?也许我应该将整个对象放在ViewData中?
由于
答案 0 :(得分:1)
FormCollection
仅包含已通过文本字段或隐藏字段发布的属性。因此,如果您需要在控制器操作中使用Id
属性,则需要将其包含在表单中。根据您在控制器操作中的操作,您可能包含也可能不包含它。没有必要为每个属性包含隐藏字段。
通常Id
就足够了,因为它允许您稍后从给定此ID的数据存储中检索对象。
答案 1 :(得分:0)
您发布表单的行为方式是什么样的?如果处理GET请求的方法接受id,如果你的POST方法也接受id并且你使用的是BeginForm辅助方法而没有重载任何参数,那么form方法将把id作为参数,你不需要担心为id本身包含隐藏字段。