0

我已经看到了一些类似的帖子,但没有什么能模仿我正在寻找的行为。使用我的简单 ASP.Net 应用程序,当提交表单时,控制器方法的结果存储在 TempData 中。基于该插槽中存在的值,我想更改(设置)标签的 CSS 类(更改颜色)。我有以下有效的查看代码:

 <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

您可以在 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。这也必须在您的 .cshtml 文件中,以便服务器处理 @TempData。

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

于 2013-02-20T16:41:06.160 回答
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 回答