2017-10-30 13 views
-1

現在、asp.netコアを使用してブログを構築しています。私は、データアノテーションを使用して、タイトルに使用される文字列の長さを制限できることを理解しています。ユーザーが入力するタグの数を制限するにはどうすればよいですか?たとえば、ここではstackoverflowに最大5つのタグしか入力できません。著者が挿入できる番号タグを制限する方法

public class Post 
     { 
      public int PostId { get; set; } 

      [MaximumLength(50)] 
      public string Title { get; set; } 

      public ICollection<PostTag> PostTags { get; set; } 
     } 


    public class PostTag 
     { 
     public int TagId { get; set; } 
     public Tag Tag { get; set; } 

     public int PostId { get; set; } 
     public Post Post { get; set;} 
     } 



    public class Tag 
    { 
     public int TagId { get; set; } 
     public string Text { get; set; } 

     public ICollection<PostTag> PostTags { get; set } 
+2

を助け場合は、組み込まれて何もない、それを行うためのコードを記述する必要があります知ってみましょう。 – Igor

+0

何Enumerable.TakeWhile メソッド(IEnumerableを、のFuncのようなものを追加する方法について) – AllocSystems

+0

ヒントの外観[here](https://stackoverflow.com/questions/5146732/viewmodel-validation-for-a-list/5146766#5146766)用のカスタムバリデータを記述することができます。あなたが少しでも検索すると、既存の多くの質問を見つけることができます。 – mfahadi

答えて

0

簡単に言えば、それを制限するコードを書く必要があります。あなたが行う方法は、あなたがそれをどのように埋めるかに大きく依存します。

相続

私はそれ

using System; 
using System.Collections.Generic; 
using System.Linq; 

namespace ConsoleApp1 
{ 
    public class Program 
    { 
     public class Posts 
     { 
      public Posts() 
      { 
       _tags = new List<string>(); 
      } 

      private List<string> _tags { get;} 

      public List<string> Tags 
      { 
       get { return _tags ; } 
      } 

      public bool AddTag(string tag) 
      { 
       var maxTag = 5; // put in config 

       if (_tags.Count() + 1 > maxTag) 
       { 
        //throw new Exception("unable to add tag... too many tags"); 
        return false; 
       } 

       _tags.Add(tag); 
       return true; 
      } 
     } 

     public static void Main() 
     { 
      // limit tags to 5 

      var post = new Posts(); 

      for (var a = 0; a < 10; a++) 
      { 
       Console.WriteLine(post.AddTag(a.ToString()) 
        ? "Added " + a + " to the tags" 
        : "Failed to add " + a + " to the tags"); 
      } 


     } 
    } 
} 

は基本的に私は、モデル内のタグのプロパティを持っているだろうかの単純な例が、クラスのメソッドを介してそののみアクセス可能。これにより、add/getメソッドの回避を防ぎます。

このようなメインの外観からの結果。

Added 0 to the tags 
Added 1 to the tags 
Added 2 to the tags 
Added 3 to the tags 
Added 4 to the tags 
Failed to add 5 to the tags 
Failed to add 6 to the tags 
Failed to add 7 to the tags 
Failed to add 8 to the tags 
Failed to add 9 to the tags 

私はこれが

関連する問題