0

サーバーに次のクラスがあります。

public class JsonDialog
{
    public IEnumerable<string> Errors { set; get; }
    public string Modified { set; get; }
    public string ModifiedBy { get; set; }
    public string PartitionKey { set; get; }
    public string PartitionKeyNew { set; get; }
    public string RowKey { get; set; }
    public string RowKeyNew { get; set; }
    public bool Success { set; get; }
}

私の MVC アクション メソッドでは、JsonResult を返します。

                return Json(new JsonDialog
                {
                    Success = false,
                    Errors = errors
                });

私のクライアントコードには次のものがあります。

    $.ajax({
        url: href,
        dataType: 'json',
        type: 'POST',
        data: $form.serializeArray()
        })
        .done(onDone)
        .fail(onFail);


var onDone = function (json, textStatus, XMLHttpRequest) {
    json = json || {};
    if (json.Success) {

私はサーバー上でクラスを使用しているため、コンパイラは、スペルミスがないことを確認するためにチェックします。たとえば、「success = false」と入力することはできません。ただし、クライアントではチェックが行われず、json.sUccEss をコーディングできますが、それでも問題ありませんが、望ましい結果は得られません。

サーバー上で行っているように、Javascriptでエラーチェックを行う方法はありますか? データをクラスに取り込み、IDE にクラス フィールドが正しいことを確認させるようなことはありますか?

4

3 に答える 3

0

役に立つ優れたテキスト エディタがあるかもしれませんが、Javascript にはそのようなものはありません。

TextSublime のようなエディターは、コードのイントロスペクションを偽造し、ファイル内検索を提供して、同じ名前を入力するのに役立ちます。

Eclipse や Netbeans のような IDE はより良い仕事をしますが、それでもあなたが望むものにはほど遠いです。Javascript は、Java や C# のように厳密に型指定された言語ではないため (そうであると言えれば...)、VS や C# に備わっている便利な機能をすべて見つけることはできません。

これはNetBeans が行うことであり、希望するほど高度ではありません。

于 2012-09-17T16:25:14.957 に答える
0

これを (部分的に) JS で一致するオブジェクトを作成することで解決します。これは、私が「ファクトリー」メソッドと呼んでいるものです (ただし、ここで言及されているように「ファクトリー」という用語を使用している場合、これは誤称です。実際には、より類似しています。ただし、JS には強力な型指定がないため、これも正確ではありません。

明らかに、インテリセンスを機能させようとしているだけなら、このコード パターンも非常に冗長ですが、JS 側のオブジェクトにメソッドがある場合JsonResult.prototype.markErrorsReviewed...特定の「クラス」のインスタンスを取得すると便利です。

簡潔にするために、JS のベースとなる C# クラスを使用します。

var JsonResult = function () {
    this.Errors = [];
    this.Modified = null;
    this.ModifiedBy = null;
    //...rest of your properties, defaulted as necessary
}

JsonResult.factory = function (o) {
    var j = new JsonResult();
    $.extend(j, o);
    //do other processing here if needed (for example, ASP.NET serializes DateTime retardedly)
    return j;
}

AJAX :

$.ajax({
    success: function(json, status, xhr) {
        var myobj = JsonResult.factory(json);
        //VS2010 will now give you intellisense w/ proper property names on myobj
        //Note: it's still buggy and sometimes won't detect things properly, but it usually works
    }
});
于 2012-09-17T16:49:32.323 に答える
0

ツールがあるかもしれませんが、次の方法でそれを達成できる場合:

コントローラーでは、json の結果ではなく部分的なビューをレンダリングし、そのビューにクラス オブジェクトを渡します。次に、そのビューで objcetName.PropertyName を記述する必要があり、それをチェックします。

于 2012-09-17T16:45:40.187 に答える