早上好。遇到其他人实现的代码,我不明白FormCollection是如何使用的。FormCollection仅仅是窗体上控件的集合吗?
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 />");
}发布于 2011-10-31 21:45:37
在这个特定的代码片段中,它没有使用,也完全不需要作为参数。
就我个人而言,我从不在ASP.NET MVC应用程序中使用FormCollection。我总是喜欢定义一个视图模型,并让控制器操作将此视图模型作为参数。它的属性将由默认的模型绑定器自动填充。例如:
public class MyViewModel
{
public string Property1 { get; set; }
public int Property2 { get; set; }
...
}然后:
public Email(MyViewModel model)
{
// use the view model here
...
}回到您的问题:FormCollection表示所有POSTed值的键值对。它是弱类型的,并且值始终是字符串,这意味着如果您想要操作它们,您必须手动将它们转换为其底层类型。试着避免它。
发布于 2011-10-31 23:01:54
代码有点奇怪,因为他们将键提交到字符串数组中,而不是遍历它。原始代码可能如下所示:
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处理程序甚至看起来并不是用来做任何事情的,所以在某种程度上,写这篇文章的人可能希望有多个类别和类型,然后只是硬编码一些选项。
https://stackoverflow.com/questions/7954554
复制相似问题