0
2つの基本クラスが検索条件に1つと検索結果に1つあります。 私は両方のUserオブジェクトバージョンの2つの派生クラスも持っています。JsonResultに渡すと派生型の基本仮想プロパティをオーバーライドする
コントローラアクションにブレークポイントを設定すると、すべてのプロパティがハードコードされているのがわかります。
このアクションをブラウザで直接呼び出すと、派生したオブジェクトの各プロパティがnullになります。
私はを推測しています。JSONシリアライゼーションでは、基本クラスと派生クラスとの違いを判断できません。
これを解決する方法はありますか?
public class BaseSearchCriteria
{
public int Page { get; set; }
public int RecordsPerPage { get; set; }
}
public class BaseSearchResults
{
public int TotalResults { get; set; }
public virtual BaseSearchCriteria SearchCriteria { get; set; }
}
public class UserSearchCriteria : BaseSearchCriteria
{
public string Username { get; set; }
}
public class UserSearchResults : BaseSearchResults
{
public new UserSearchCriteria SearchCriteria { get; set; }
}
public JsonResult Search(UserSearchCriteria model)
{
var viewModel = new UserSearchResults
{
SearchCriteria = new UserSearchCriteria
{
Page = 1,
RecordsPerPage = 15
}
};
viewModel.TotalResults = 100;
return Json(viewModel, JsonRequestBehavior.AllowGet);
}
'new'で隠れるのを避けてください。ジェネリック医薬品はこれと一緒に行く方法だろう。 –
@ DanielA.White例を教えてください。 – user3953989