gpt4 book ai didi

c# - 在模型上添加动态只读属性

转载 作者:行者123 更新时间:2023-12-02 20:15:01 25 4
gpt4 key购买 nike

在我的 Controller MVC 中,我有一个操作来显示我的模型(具有 3 个字段 [Code]、[Libelle] 和 [IsActif] 的通用模型)。

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
[ActionName("AfficheDetailMotifRejet")]
[AuthorizeRoleFilter(Roles = TypeRoles.Roles.ADMINISTRATEUR_NATIONAL)]
public ActionResult AfficheDetailMotifRejet([DefaultValue(Int64.MinValue)] Int64 id)
{
DetailGeneric dg = new DetailGeneric { Id = id };

if (id > 0)
{
MotifRejet s = _srvMotifRejet.Charger(id);
Mapper.CreateMap<MotifRejet, DetailGeneric>();
dg = Mapper.Map<MotifRejet, DetailGeneric>(s);
}

return View("GererMotifRejet", dg);
}

如果我发送 Int64.MinValue 作为 Id,那么我的模型将显示为空,准备插入。但是,当我使用现有 ID 显示编辑时,我需要将字段 [Code] 设置为只读模式。

最好的解决方案是什么?

我想在 dg.Code 中添加 [ReadOnly(true)] 属性,但是如何做到这一点?

但是,我可以使用 JavaScript 来完成此操作,但如果用户没有激活 JavaScript,则存在风险。

感谢您的帮助。

最佳答案

您无法在运行时设置属性(例如在“代码”中)。

您最好的选择是创建一个包含编辑和创建模式的 View 模型,然后执行以下两件事之一:

1) 执行 @if (Model.IsEditMode) 检查,如果为 true,则渲染出 @Html.EditorFor@Html.DisplayFor 如果为假

2) 创建一个与模型绑定(bind)的 HTML 帮助程序,它检查模型数据并根据相同的值调用上述帮助程序之一。

无论哪种方式,如果您想做出相应的决策,您都需要某种“基本” View 模型来创建和编辑 View 。

关于c# - 在模型上添加动态只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com