【问题标题】:How Do i pass form values from a Dictionary <String, String> to an Object in C#如何将表单值从字典 <String, String> 传递给 C# 中的对象
【发布时间】:2015-12-26 07:34:33
【问题描述】:

我从字典中的表格中获取值。 页面上的键等于字段,值是用户提供的内容。是否有更好的方法将值传递给对象,如下所示:我是新手,因此将感谢您的帮助。感谢您的帮助
我使用以下调用获取值:

public async void PostFormData()

现在我正在尝试将字典中的值传递给对象,如下所示。 下面的方法非常初级,我希望让它更有活力。

public static void ConverttoObject()
                {
                    Dictionary<string, string> test = new Dictionary<string, string>();

                    test.Add("Name", "Daniel");
                    test.Add("LastName", "Wong");
                    test.Add("Zip", "60004");
                    test.Add("City", "New York");


                    var abc = new FormInfo();

                    foreach (var key in test.Keys)
                    {
                        foreach (var val in test.Values)
                        {
                            if (key.Equals("Name"))
                                abc.Name = val;
                            else if (key.Equals("LastName"))
                                abc.City = val;
                            else if (key.Equals("Zip"))
                                abc.Zip = val;
                            else if (key.Equals("City"))
                                abc.City = val;

                        }
                    }
                }
            }

            public class FormInfo
            {
                public string Name { get; set; }
                public string LastName { get; set; }
                public string Zip { get; set; }
                public string City { get; set; }

            }

【问题讨论】:

  • 你是什么意思从字典中的javascript获取表单值?你是什​​么客户端代码。您如何发布表单值。您的 POST 方法的签名是什么?
  • foreach (var key in provider.FormData.AllKeys) { foreach (var val in provider.FormData.GetValues(key)) { Trace.WriteLine(string.Format("{0}: {1 }", 键, val)); } }
  • 如果您的 POST 方法是 public ActionResult Edit(Form model),那么该模型已为您正确绑定。你想做什么?
  • 我正在尝试从服务器端 POST。我正在使用 public async void PostFormData()
  • 我认为你需要去 MVC 站点并通过一些教程来了解 MVC 的基础知识

标签: c# asp.net-mvc dictionary


【解决方案1】:

您可以创建自己的扩展方法来将字典转换为像这样的对象:

public static class IDictionaryExtensions
{
    public static T ToObject<T>(this IDictionary<string, object> source)
        where T : class, new()
    {
        T someObject = new T();
        Type someObjectType = someObject.GetType();

        foreach (KeyValuePair<string, object> item in source)
        {
            someObjectType.GetProperty(item.Key).SetValue(someObject, item.Value, null);
        }

        return someObject;
    }
}

解决方法here.

【讨论】:

    【解决方案2】:

    你不能这样做:

    abc.Name = test["Name"];
    abc.LastName = test["LastName"];
    abc.Zip = test["Zip"];
    abc.City = test["City"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2014-04-25
      • 2016-09-20
      • 1970-01-01
      • 2014-07-06
      • 2019-12-21
      • 2015-11-20
      相关资源
      最近更新 更多