【问题标题】:quick FormCollection question ASP.NET MVC2快速 FormCollection 问题 ASP.NET MVC2
【发布时间】:2010-06-20 15:38:53
【问题描述】:
我有一个简单的对象
public class SomeObject
{
public Int32 id { get; set; }
public string name { get; set; }
}
在强类型视图中,我让用户编辑 SomeObject.name,当表单发布时,接收方法在 FormCollection 中看不到 SomeObject.id(它确实看到了 SomeObject.name)。我是否需要在表单中实际放置每个对象属性才能在表单发布时访问它们?
最佳做法是什么,我是否应该为我不打算让用户编辑的每个属性插入隐藏字段?也许我应该将整个对象放在 ViewData 中?
谢谢
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-2
【解决方案1】:
FormCollection 仅包含通过文本字段或隐藏字段发布的属性。因此,如果您需要在控制器操作中使用 Id 属性,则需要将其包含在表单中。根据您在控制器操作中所做的事情,您可能会或可能不会包含它。不必为每个属性都包含隐藏字段。
通常Id 就足够了,因为它允许您稍后在给定此 ID 的情况下从数据存储中检索对象。
【解决方案2】:
您发布表单的操作方法是什么样的?如果您处理 GET 请求的方法采用 id,如果您的 POST 方法也采用 id,并且您使用 BeginForm 辅助方法且没有重载任何参数,则 form 方法将采用 id 作为参数,您不需要担心包含 id 本身的隐藏字段。