0

我一直想知道从表单集合中生成强类型对象以从中提取数据的可能性。

换句话说,是否可以根据 formcollection 对象中的键生成一个类?

例如:假设您有一个带有“ID3”键和“false”值的复选框。并且能够写出:

bool CheckBox = FormObj.ID3.GetValue();

我意识到这可能不是世界上最有用的东西,但仍然很有趣。

我猜这取决于语言限制。

对此有什么想法吗?

编辑:

好的,所以如果我有一个列表(未知长度)并foreach在我的视图中执行并获取复选框,我将如何将它们绑定到我的控制器中?

    <% foreach (var item in Model.AllAttributes)
   { %>
<tr>
    <td>
        <%: Html.CheckBox(item.AttributeID.ToString(), item.Chosen) %>
    </td>
    <td>
        <%: item.AttributeTitle %>
    </td>
    <td>
        <%: item.Category.CategoryName %>
    </td>
</tr>
<% } %>

我在控制器中放了什么?

4

2 回答 2

0

关于您的编辑:。

您将必须有以下课程:

Attribute
{
    bool AttributeID;
    string AttributeTitle;
    cat Category;

}

并在您的模型中(例如晚餐)。你会有一个

IEnumerable<Attribute> AllAttributes;

然后在控制器中你可以访问它:

[HttpPost]
        public ActionResult Create(Dinner dinner)
        {
            if (ModelState.IsValid)
            {
                 bool id = dinner.AllAttributes[0].AttributeID;
于 2011-03-11T10:37:01.190 回答
0

是的,它由 ModelBinder 完成,DefaultModelBinder 类适用于大多数 .NET Framework 类型,包括数组和 IList、ICollection 和 IDictionary 对象,但如果需要,您可以创建自己的 ModelBinder。查看此 MSDN 帖子了解更多详细信息。

您的控制器操作将是这样的

        [HttpPost]
        public ActionResult Create(Dinner dinner)
        {
            if (ModelState.IsValid)
            {
                int id = dinner.ID;
                ...
                ...
于 2011-03-11T09:04:13.373 回答