0

これに関するいくつかの同等の投稿を見てきましたが、探している動作を模倣するものはまったくありません。私の単純な ASP.Net アプリでは、フォームが送信されると、Controller メソッドの結果が TempData に格納されます。そのスロットの値の存在に基づいて、タグの CSS クラスを変更 (設定) したい (色を変更する)。動作する次の View コードがあります。

 <p>
    <input type="submit" name="submitAction" value="Test Connection" />
    @if (TempData["connectionResults"] != null)
    {
        <span class="@(TempData["connectionResults"].ToString() 
                         == "Connection successful" ?
                            "dbConnectionSuccess" : "dbConnectionFail")">
           @TempData["connectionResults"]
        </span> 
    }
    </p> 

私の質問は、javascript または jQuery でこれを行うよりエレガントな方法はありますか? 同等のことを行うSOに関する投稿はたくさんありますが、コントローラーでのアクション呼び出しの結果に関する投稿はありません。

ありがとう!

4

2 に答える 2

0

最終的に、サーバー側でロジックを実行することで、皆さんが何を意味するのかを理解したと思います。コントローラーからクラス名を返すつもりだったと思います...コントローラーからテストの結果を返すだけだったと思います。これは私が最終的に得たものです:

<p>
    <input type="submit" name="submitAction" id="testConnection" value="Test Connection" />
    @if (@Model.IsDbConnectionSuccessful != null)
    {
        if (@Model.IsDbConnectionSuccessful.Value)
        {
            <span class="dbConnectionSuccess">Connection successful</span>                    
        }
        else
        {
            <span class="dbConnectionFail">Connection  Unsuccessful</span>                     
        }               
    }
</p> 
于 2013-02-20T18:29:00.210 に答える
0

これは、document.ready 内の JQuery で行うことができます。例えば

$(document).ready(function () {
     var resultString= '@TempData["connectionResults"].ToString()';

     if (resultString != null && resultString.toLowerCase() == 'connection successful') {
          $('#spanID').addClass('dbConnectionSuccess');
     } else {
          $('#spanID').addClass('dbConnectionFail');
     }
});

「span」タグに ID を指定する必要があります。@TempData がサーバーによって処理されるためには、これも .cshtml ファイル内にある必要があります。

これは上記の IMO よりもきれいですが、それでも優れた解決策ではありません。

于 2013-02-20T16:41:06.160 に答える