0

EncryptedValueというクラスを作成しました。演算子とToStringを定義して、コードで通常の値(int、double、DateTime)として使用できるようにしました。私がやりたいのは、このオブジェクトに値を割り当て、それをページに返送されるJSONに含めることです。

これが私のクラスです:

public class EncryptedValue<T> {
  public T Value { get; }
  public string Encryted { get; }
  /* Implementation Details */
}

これが私の行動です:

public JsonResult MyAction() {
 EncryptedValue value = 5;
 return Json(new { EncryptedValue: value });
}

これが私が作成したいJSONです:

{ "EncryptedValue":"TheEncryptedString" }

しかし、代わりに生成されるものは次のとおりです。

{ "EncryptedValue":{"Encrypted":"TheEncryptedString","Value":2}}

クラスにプロパティを設定しなくても、JSONは次のようになります。

{ "EncryptedValue":{} }

JavaScriptSerializerにクラスが単一の値であると思わせ、その上でToString()を呼び出す方法を知っている人はいますか?

アップデート

これは単純化された例であることを明確にする必要があると思います。このクラスを利用する複雑なタイプがあります。

public class User {
  public EncryptedValue UserId { get; set }
  public string UserName { get; set }
}

そして、私はユーザーのリストを書きます:

IList<User> users = GetUsers();
return Json(users);
4

3 に答える 3

0

私が考えることができる最も簡単な方法は、コントローラーにカスタムメソッドを提供することです。

 protected ActionResult Encrypted<T>(T inputElement)
 {
     Encrypted<T> instance = new Encrypted<T> { Value = inputElement };

     return Json(new { Encrypted = instance.Encrypted });
 }

次に、コントローラーからこれを呼び出すだけです。

public ActionResult Sample()
{
     return Encrypted(10);
}
于 2011-08-17T18:13:56.417 に答える
0

これは機能しますか:

return Json(new { EncryptedValue: value.Encrypted} );
于 2011-08-17T18:14:47.570 に答える
0

linq を使用して、必要なデータのみを含む匿名型を作成する (または linq なしで作成する) ことができます。

編集:

これはあなたが求めていることを達成しませんか?

        IList<User> userList = GetUsers();

        var users = from user in userList
                    select new
                            {
                                EncryptedValue = user.UserId.Encryted
                            };

        return Json(users);
于 2011-08-17T18:13:06.427 に答える