从 ASP.NET MVC 5 中的控制器 ActionResult 更改 html 元素样式

Posted

技术标签:

【中文标题】从 ASP.NET MVC 5 中的控制器 ActionResult 更改 html 元素样式【英文标题】:Change html elemts style from Controllers ActionResult in ASP.NET MVC 5 【发布时间】:2017-07-11 04:36:42 【问题描述】:

我正在控制器中进行 if 检查

if(validDate<DateTime.Now)

   //TODO

如果这个陈述是真的,我想做的是在我的视图中隐藏一个特定的按钮,否则显示它。我也在前端使用 jquery。 有人可以帮助我从控制器操作 html 元素、按钮、例如添加样式类或其他东西吗? 在这种情况下,我需要从控制器而不是 jquery 进行更改,但如果需要,我可以在之后使用 jquery。

【问题讨论】:

很简单,也是 ASP.NET MVC 的核心概念之一。我强烈建议您阅读更多文档,例如:docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/…(一旦您拥有 ViewModel,很容易将 bool 属性设置为 IsDateValidtruefalse 并在查看是否显示按钮 您能否为我的案例提供一个示例答案?我知道这是非常基本的,但是... 【参考方案1】:

您需要使用模型(也称为 ViewModel),@thomashaid 已经给您评论了一篇有用的文章:Views And ViewModels。

在 MVC 项目的“模型”文件夹中创建一个类。像这样:

public class MyViewModel

    public bool ShowButton  get; set; 

然后在您的控制器中,创建ViewModel 类的对象并将相应的值分配给ShowButton 属性。然后将 ViewModel 传递给返回的视图:

public ActionResult MyAction()

    var myViewmodel = new MyViewModel();´

    if(validDate < DateTime.Now)
    
        myViewModel.ShowButton = true;
    

    return View(myViewModel);

最后,在视图中使用 razor 语法来操作将返回给客户端的 HTML 代码:

@model MyViewModel

@if (Model.ShowButton)

    <Button>now you see me</Button>
 

【讨论】:

以上是关于从 ASP.NET MVC 5 中的控制器 ActionResult 更改 html 元素样式的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.Net MVC 5 中将 javascript 数组从视图传递到控制器

在 ASP.NET MVC 中记录错误

ASP.Net MVC 5 和 SQL 事务隔离级别

控制器中的 Asp.Net MVC 5 ModelState 具有索引、添加、编辑

asp net mvc 5中的授权帮助

无法在 ASP.NET MVC 5 中从视图到控制器获取 Select2 标记值