如何使用jQuery基于Controller动作结果有条件地更改CSS类?

时间:2013-02-20 16:22:09

标签: jquery css asp.net-mvc

我已经看到了一些类似的帖子,但没有什么能模仿我正在寻找的行为。使用我的简单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上有很多帖子可以做类似的事情,但不是控制器中动作调用的结果。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在document.ready中使用JQuery执行此操作。 E.g。

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

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

您必须为“span”标记提供ID。这也必须在你的.cshtml文件中,以便服务器处理@TempData。

这比上述IMO更整洁,但仍然不是一个好的解决方案。

答案 1 :(得分: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>