繁体   English   中英

blazor 客户端中数据注释的最佳方法是什么? 当 model 所在的共享项目缺少程序集时?

[英]what is best approach for dataadnotations in blazor client side? when shared project where model is , is missing assembly?

所以我有一些 blazor 客户端项目,所以我应该在共享项目中说person.cs ,这样它就可以在客户端和服务器端使用 - 按照设计,它是这样的 class 的正确位置......?

现在在客户端我有MudBlazor作为组件库

所以现在他们可以选择根据属性在组件上自动设置标签,如下 所示 https://mudblazor.com/components/form#automatically-set-labels

所以我需要像

sharedproject/person.cs

 public class person{

   [Label("enter name")]
   public string name {get;set;}
  }

它对我大喊大叫,因为共享项目不知道这个MudBlazor LabelAttribute 在此处输入图像描述

那么这里最好的解决方案是什么? 在共享项目中安装 mudblazor? 这是个好选择吗? 在这种情况下还是不使用此属性? 我在客户端和服务器项目中都需要这个 class 创建第二个“派生”是选项但它与[labels]相同 class 所以不是最好的选择恕我直言?

请告知最好的问候

一种选择是使用 IPerson 接口,它有两种实现方式,一种在客户端,另一种在服务器端。

像那样的东西

public interface IPerson {
   string Name {get;set;}
}


// Implementation in client side
public class Person : IPerson {

   [Label("enter name")]
   public string Name {get;set;}
}

// Implementation in server side
public class Person : IPerson {

   public string Name {get;set;}
}

这样,你仍然可以拥有

我认为您是对的,客户端和服务器使用的 DTO 类的正确位置是一个共享项目。

也许干净的解决方案是拥有“派生”类,但最简单的方法是在共享项目中安装 MudBlazor。 在这种情况下,您将在 API 项目中拥有这个 dll,但不需要复制所有 DTO 类。

恕我直言,MudBlazor 应该提供一个“全局”配置,您可以在其中定义是使用其自定义属性“标签”还是通用属性“显示”,这样就可以在共享项目中使用“显示”属性而无需安装 MudBlazor。

在这些主题中讨论了这一点:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM