C# 将对象转换为URL编码的字符串

C# 将对象转换为URL编码的字符串,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我有一节课 class Example { public int Prop1 { get; set; } public int Prop2 { get; set; } public String Prop3 { get; set; } } 如何将此对象自动转换为URL编码的字符串,然后将其附加到主机名 URL编码字符串: prop1=val1&prop2=val2&prop3=val3 最终结果: http://example.com?prop1=val1&prop2=

我有一节课

class Example
{
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }
    public String Prop3 { get; set; }
}
如何将此对象自动转换为URL编码的字符串,然后将其附加到主机名

URL编码字符串:
prop1=val1&prop2=val2&prop3=val3

最终结果:
http://example.com?prop1=val1&prop2=val2&prop3=val3

您可以使用:

如果您想要一个绝对url,只需使用:


如果您使用的是Asp.NETMVC,那么只需将FormMethod更改为GET。 否则,如果您想在代码中使用反射,可以使用反射。(详情如下)

公共类测试模型
{
[必需]
公共int Id{get;set;}
[必需]
公共字符串名称{get;set;}
公共字符串测试()
{
TestModel model=newtestmodel(){Name=“Manas”,Id=1};
类型t=model.GetType();
NameValueCollection nvc=新的NameValueCollection();
foreach(t.GetProperties()中的var p)
{
变量名称=p.名称;
var value=p.GetValue(model,null).ToString();
nvc.Add(名称、价值);
}
var结果=ConstructionQueryString(nvc);
返回结果;
}
公共字符串构造函数QueryString(NameValueCollection参数)
{
列表项=新列表();
foreach(参数中的字符串名称)
Add(String.Concat(name,“=”,HttpUtility.UrlEncode(Params[name]));
返回字符串.Join(&),items.ToArray();
}
}

我认为否决票的意思是“你应该写你的场景”。你为什么要这么做。你想在哪里使用这个?标题是“objecttourl”,标签是“asp.netmvc”,在mvc中最好的方式是@Darin建议。因为UrlHelper就是这样设计的。所以你的问题不够清楚。我希望你能理解…这只在MVC上有效,对吗?当然可以,为什么不行?
var model = new MyClass
{
    Prop1 = 1,
    Prop2 = 2,
    Prop3 = "prop 3"
};
string url = Url.Action("index", "home", model);
// will generate /?Prop1=1&Prop2=2&Prop3=prop%203
string url = Url.Action("index", "home", model, "http");
public class TestModel
{
    [Required]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }

    public string Test()
    {
        TestModel model=new TestModel(){Name="Manas",Id=1};
        Type t = model.GetType();
        NameValueCollection nvc=new NameValueCollection();
        foreach (var p in t.GetProperties())
        {
            var name = p.Name;
            var value=p.GetValue(model,null).ToString();
            nvc.Add(name, value);
        }

       var result= ConstructQueryString(nvc);
       return result;
    }
    public string ConstructQueryString(NameValueCollection Params)
    {
        List<string> items = new List<string>();
        foreach (string name in Params)
            items.Add(String.Concat(name, "=", HttpUtility.UrlEncode(Params[name])));
        return string.Join("&", items.ToArray());
    }
}