C# 在MVC页面上显示只读/可编辑控件的最佳方式是什么

C# 在MVC页面上显示只读/可编辑控件的最佳方式是什么,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我需要根据权限在MVC razor页面上显示只读或可编辑控件。我使用了脚手架和三元运算符在Razor视图上显示只读/可编辑控件。有没有更好的方法不用将条件逻辑写入Razor视图?请帮忙 谢谢您可以设置一次。在视图的顶部: @{ string readonly = (somePermission) ? "readonly" : ""; 然后: 然后,您只需在一个位置更改它,并且不会牺牲性能您可以设置一次。在视图的顶部: @{ string readonly = (somePermission

我需要根据权限在MVC razor页面上显示只读或可编辑控件。我使用了脚手架和三元运算符在Razor视图上显示只读/可编辑控件。有没有更好的方法不用将条件逻辑写入Razor视图?请帮忙


谢谢

您可以设置一次。在视图的顶部:

@{ string readonly = (somePermission) ? "readonly" : "";
然后:



然后,您只需在一个位置更改它,并且不会牺牲性能

您可以设置一次。在视图的顶部:

@{ string readonly = (somePermission) ? "readonly" : "";
然后:



然后,您只需在一个位置更改它,并且不会牺牲性能

您可以设置一次。在视图的顶部:

@{ string readonly = (somePermission) ? "readonly" : "";
然后:



然后,您只需在一个位置更改它,并且不会牺牲性能

您可以设置一次。在视图的顶部:

@{ string readonly = (somePermission) ? "readonly" : "";
然后:



<>你只需要在一个地方改变它,并且不会牺牲性能

如果这是基于权限的,你可以考虑根本不渲染字段,如果用户没有访问权,只显示纯文本值。只有一点点主动权的用户可以轻松撤消任何字段的只读状态。至少,您应该重新检查对POST的权限,并确保在不允许用户的情况下不会保存更改。@ChrisPratt,是的,如果用户没有权限,我将显示纯文本,是的,我也将对POST进行检查,所以剩下的问题是,这是唯一的方法(在视图中使用条件语句)如果这是基于权限的,则可以考虑不呈现字段,如果用户没有访问权,只需显示纯文本值。只有一点点主动权的用户可以轻松撤消任何字段的只读状态。至少,您应该重新检查对POST的权限,并确保在不允许用户的情况下不会保存更改。@ChrisPratt,是的,如果用户没有权限,我将显示纯文本,是的,我也将对POST进行检查,所以剩下的问题是,这是唯一的方法(在视图中使用条件语句)如果这是基于权限的,则可以考虑不呈现字段,如果用户没有访问权,只需显示纯文本值。只有一点点主动权的用户可以轻松撤消任何字段的只读状态。至少,您应该重新检查对POST的权限,并确保在不允许用户的情况下不会保存更改。@ChrisPratt,是的,如果用户没有权限,我将显示纯文本,是的,我也将对POST进行检查,所以剩下的问题是,这是唯一的方法(在视图中使用条件语句)如果这是基于权限的,则可以考虑不呈现字段,如果用户没有访问权,只需显示纯文本值。只有一点点主动权的用户可以轻松撤消任何字段的只读状态。至少,您应该重新检查对POST的权限,并确保在不允许用户的情况下不会保存更改。@ChrisPratt,是的,如果用户没有权限,我将显示纯文本,是的,我也将对POST进行检查,所以剩下的问题是,这是唯一的方法(在视图中使用条件语句)?如果您使用
@Html.TextBoxFor(…)
?@mxx,您可以使用该方法的签名:@Html.TextBoxFor(p=>p.YourField,new{readonly=somePermission})。如果somePermission为null,则该属性将不会添加到标记中。如果您使用
@Html.TextBoxFor(…)
?@mxx,则可以使用该方法的签名:@Html.TextBoxFor(p=>p.YourField,new{readonly=somePermission})。如果somePermission为null,则该属性将不会添加到标记中。如果您使用
@Html.TextBoxFor(…)
?@mxx,则可以使用该方法的签名:@Html.TextBoxFor(p=>p.YourField,new{readonly=somePermission})。如果somePermission为null,则该属性将不会添加到标记中。如果您使用
@Html.TextBoxFor(…)
?@mxx,则可以使用该方法的签名:@Html.TextBoxFor(p=>p.YourField,new{readonly=somePermission})。如果somePermission为null,则该属性不会添加到标记中。