C# MVC4使用控制器隐藏或禁用字段

C# MVC4使用控制器隐藏或禁用字段,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,我是mvc4的新手,我有个问题。 在控制器中,我将检查应该隐藏或禁用哪个字段。 对于普通c,我可以使用.visible来求解 但是MVC4+剃须刀,我完全不知道 我不想为每个文本框添加css类,如下所示 @Html.TextAreaFormodel=>model.Message,新建{@class=hide} 1-Javascript //在控制器中构造隐藏字段 Viewbag.hideField=消息,等等,等等 //在视图中使用javascript隐藏 $@Viewbag.hideField

我是mvc4的新手,我有个问题。 在控制器中,我将检查应该隐藏或禁用哪个字段。 对于普通c,我可以使用.visible来求解

但是MVC4+剃须刀,我完全不知道 我不想为每个文本框添加css类,如下所示

@Html.TextAreaFormodel=>model.Message,新建{@class=hide}

1-Javascript

//在控制器中构造隐藏字段 Viewbag.hideField=消息,等等,等等

//在视图中使用javascript隐藏 $@Viewbag.hideField.hide

这就是我所能想到的,任何华丽的方式来实现这一点

这些字段是动态的,它根据用户角色来确定其显示或隐藏, 如果我在视图中进行检查,这将是一项乏味的工作,
所以我想,无论如何,我都可以在controller中通过编程来完成这项工作。

您可以使用一个助手来完成这项工作:

Html.HiddenFor(x => x.Message)
或将css规则应用于隐藏的类:

.hidden {
    display: none;
}

在HTML中硬编码数据并使用javascript或css有什么不好?这就是网络的工作原理

这里还有另一个选项:在控制器中创建元素列表,然后使用视图中返回的列表怎么样

然后你就可以像这样做了

var itemsToDisplay=新列表

if (User.Role == Admin)
{
var htmlHelper = HtmlHelper()
 itemsToDisplay.Add(htmlHelper.TextBoxFor(m => m.Name).ToString());
}

return View("view",itemsToDisplay)

不需要JS。只需为该类设置css规则:display:none;谢谢Dmitry的尝试,但这并不简单。这些字段是动态的,它基于用户角色来确定其显示或隐藏,如果我在视图中执行此检查,这将是一项繁琐的工作,因此我认为无论如何我都可以在controller中通过编程来执行。这些字段是动态的,这意味着,对于某些用户,它的隐藏,某些用户的显示,以及我希望使用controller来控制。所以我不需要向viewcontroller中的每个文本字段添加检查,它只能控制模型属性的值。你需要在视图中进行某种类型的检查我想是的,因为我搜索某个时间,我想覆盖htmlhelper来做这件事。通过在创建文本框之前添加viewbag检查,但它不像MVC,V不再是一个视图,其次我仍然必须更改所有视图模板