Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Asp.NETMVC4中,如何通过将对象作为参数传递来执行操作链接?_C#_Asp.net_Json_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 在Asp.NETMVC4中,如何通过将对象作为参数传递来执行操作链接?

C# 在Asp.NETMVC4中,如何通过将对象作为参数传递来执行操作链接?,c#,asp.net,json,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Json,Asp.net Mvc,Asp.net Mvc 4,我希望通过将对象作为参数传递来执行操作。为此,我将该对象序列化为Json字符串,然后将该字符串转换为十六进制字符串,并将该十六进制字符串作为参数传递到操作链接中 我有一个这样的物体 Product prodObject = new Product { Categories = new Category { CategoryName = "Stationary" }, ProductName = "Book", Price = 250 }; var jsontString = JsonConve

我希望通过将对象作为参数传递来执行操作。为此,我将该对象序列化为Json字符串,然后将该字符串转换为十六进制字符串,并将该十六进制字符串作为参数传递到操作链接中

我有一个这样的物体

Product prodObject = new Product { Categories = new Category { CategoryName = "Stationary" }, ProductName = "Book", Price = 250 };
var jsontString = JsonConvert.SerializeObject(prodObject);
将上面的对象序列化为Json字符串,如下所示

Product prodObject = new Product { Categories = new Category { CategoryName = "Stationary" }, ProductName = "Book", Price = 250 };
var jsontString = JsonConvert.SerializeObject(prodObject);
我已经使用下面的代码将上面的Json字符串转换为十六进制字符串

public string ConvertStringtoHex(string encodeMe, System.Text.Encoding encoding)
    {
        Byte[] stringBytes = encoding.GetBytes(encodeMe);
        StringBuilder sbBytes = new StringBuilder(stringBytes.Length * 2);
        foreach (byte b in stringBytes)
        {
            sbBytes.AppendFormat("{0:X2}", b);
        }
        return sbBytes.ToString();
    }
在我的行动结果返回如下

string hexString = ConvertStringtoHex(jsontString, System.Text.Encoding.Unicode);
return JavaScript(string.Format("document.location = '{0}';", Url.Action("Checkout", "PurchaseModule", new { pid= hexString })));
var JsonString = JsonConvert.DeserializeObject(MyString);
我再次在ActionResult Post方法中将该十六进制字符串转换为Json字符串,然后尝试将Json字符串转换为原始对象

string MyString = ConvertHextoString(pid, System.Text.Encoding.Unicode);
使用以下代码将十六进制字符串转换为Json字符串

public static string ConvertHextoString(string decodeMe, System.Text.Encoding encoding)
    {
        int numberChars = decodeMe.Length;
        byte[] bytes = new byte[numberChars / 2];
        for (int i = 0; i < numberChars; i += 2)
        {
            bytes[i / 2] = Convert.ToByte(decodeMe.Substring(i, 2), 16);
        }
        return encoding.GetString(bytes);
    }
我在下面的代码行中遇到错误

Product prodObject = (Product)JsonString;
这里我得到一个错误,如下所示。
无法将“Newtonsoft.Json.Linq.JObject”类型的对象强制转换为“Product”类型。

有人知道如何解决这个问题吗?

试试这个:

Product prodObject = JsonConvert.DeserializeObject<Product>(MyString);
Product prodObject=JsonConvert.DeserializeObject(MyString);

添加注释作为答案:

直接反序列化为正确的类型:

var prodObject = JsonConvert.DeserializeObject<Product>(MyString);
var prodObject=JsonConvert.DeserializeObject(MyString);

您是否尝试反序列化为正确的类型
var prodObject=JsonConvert.DeserializeObject(MyString)感谢@freedomn-m`var prodObject=JsonConvert.DeserializeObject(MyString);'为我工作。