首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# MVC .Net FormCollection:如何使用FormCollection

C# MVC .Net FormCollection:如何使用FormCollection
EN

Stack Overflow用户
提问于 2011-10-31 21:45:01
回答 2查看 4.9K关注 0票数 0

早上好。遇到其他人实现的代码,我不明白FormCollection是如何使用的。FormCollection仅仅是窗体上控件的集合吗?

代码语言:javascript
复制
        public Email(FormCollection fc)
        {
            StringBuilder sb = new StringBuilder();
            this.fc = fc;
            string[] keys = fc.AllKeys;

            sb.Append("Category,\"REQUEST\",<br />");
            sb.Append("Type,\"TEST EXPRS\",<br />");
         }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-31 21:45:37

在这个特定的代码片段中,它没有使用,也完全不需要作为参数。

就我个人而言,我从不在ASP.NET MVC应用程序中使用FormCollection。我总是喜欢定义一个视图模型,并让控制器操作将此视图模型作为参数。它的属性将由默认的模型绑定器自动填充。例如:

代码语言:javascript
复制
public class MyViewModel
{
    public string Property1 { get; set; }
    public int Property2 { get; set; }
    ...
}

然后:

代码语言:javascript
复制
public Email(MyViewModel model)
{
    // use the view model here
    ...
}

回到您的问题:FormCollection表示所有POSTed值的键值对。它是弱类型的,并且值始终是字符串,这意味着如果您想要操作它们,您必须手动将它们转换为其底层类型。试着避免它。

票数 5
EN

Stack Overflow用户

发布于 2011-10-31 23:01:54

代码有点奇怪,因为他们将键提交到字符串数组中,而不是遍历它。原始代码可能如下所示:

代码语言:javascript
复制
FormCollection fc;

public Email(FormCollection fc)
    {
        StringBuilder sb = new StringBuilder();
        this.fc = fc;
        string[] keys = fc.AllKeys;

        sb.Append("Category," + fc[keys[0]] + ",<br />");
        sb.Append("Type,"+ fc[keys[1]] +",<br />");
     }

我认为这是可行的,也可能是他们将价值观带出来的方式。这肯定不是最好的方法。

正如Darin指出的那样,for处理程序甚至看起来并不是用来做任何事情的,所以在某种程度上,写这篇文章的人可能希望有多个类别和类型,然后只是硬编码一些选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7954554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档