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