JSON を含む非表示のテキスト フィールドを介して、MVC 3 コントローラーにデータを投稿しようとしています。その JSON を文字列 courseList 経由で渡しました。なぜこれが機能しないのか誰にも分かりますか?
私がやっているのは、JSON 文字列からバイト [] を作成し、それを MemoryStream に書き込み、そのストリームを逆シリアル化すること、または試みていることだけです。BookCourse bc は常に null プロパティで終了します。
これは、私が使用する JSON のようなものです。
[{"coursesection":"1234","netlogon":"jsmith","label":"CRSE-1313 Generic Course Titling ~ Joe Smith"}]
そして、デシリアライズされるオブジェクトは次のとおりです。
using System.Runtime.Serialization;
namespace xxxx.Models
{
[DataContract]
public class BookCourse
{
[DataMember]
public string coursesection { get; set; }
[DataMember]
public string netlogon { get; set; }
[DataMember]
public string label { get; set; }
}
}
最後に、それを実行するためのコントローラー アクション コード --
var byteArray = Encoding.ASCII.GetBytes(coursesList);
// Deserialize byte array to data type
var stream = new MemoryStream();
stream.Write(byteArray, 0, byteArray.Length);
var crs = new DataContractJsonSerializer(typeof(BookCourse));
stream.Position = 0;
// Read stream to object
ad.CourseSectionIDs = new List<int>();
try
{
var bc = (BookCourse) crs.ReadObject(stream);
while (bc.coursesection != null)
{
cs.AssociateCourseBook(bc.netlogon, bc.coursesection, ad.ISBN);
bc = (BookCourse)crs.ReadObject(stream);
}
}
catch (System.Runtime.Serialization.SerializationException e)
{
// Is this best practice for handling "none"?
}