C#修剪得到;组;

时间:2016-12-28 19:40:30

标签: c# model-view-controller trim

我是来自10年webforms的MVC新手。这是我继承的代码:

namespace sample.Models
{
    public class Pages
    {
        public int PageID { get; set; }
        public string FolderName { get; set; }
    }
}

如何将trim函数应用于此代码的“set”部分?现在它在foldername的末尾允许空格,我需要防止它。

好的,我已经纳入了建议,但空间仍在保存 这是UI / vs数据库。 UI正在正确修剪,但带有空格的完整值存储在表格中:

UI

Database has spaces

7 个答案:

答案 0 :(得分:19)

您需要backing field

public class Pages
{
    public int PageID { get; set; }

    private string _folderName;
    public string FolderName 
    { 
        get { return _folderName; } 
        set { _folderName = value.Trim(); }
    }
}

在setter方法中,我们使用Trim字符串的方法,

  

从当前String对象中删除所有前导和尾随空白字符。

有关此方法的详细信息,请查看here

答案 1 :(得分:1)

属性的简写语法仅适用于您希望在字段顶部提供精简抽象层的情况。如果要操纵getter或setter中的字段,则需要自己指定支持字段。

namespace sample.Models
{
    public class Pages
    {
        public int PageID { get; set; }

        private string folderName;
        public string FolderName 
        { 
            get { return folderName; }
            set { folderName = value.Trim(); }
        }
    }
}

答案 2 :(得分:1)

这个解决方案怎么样:

    public class Pages
    {
         private string _folderName;

         public int PageID { get; set; }

         public string FolderName
         {
              get { return _folderName; }
              set { _folderName = value?.Trim() ?? string.Empty; }
         }
}

答案 3 :(得分:1)

public class Pages
{
    public int PageId { get; set; }

    // you need a backing field then you can customize the set and get code
    private string folderName;
    public string FolderName
    {
        get { return this.folderName; }

        // if the fileName can be set to null you'll want to use ?. or you'll get 
        // a null reference exception
        set { this.folderName = value?.Trim(); }
    }
}

答案 4 :(得分:1)

只有在字符串的值不为null时,您才可以考虑编写自定义扩展方法来调用Trim:

public static class CustomExtensions
{
     public static string TrimIfNotNull(this string value)
     {
         if (value != null)
         {
             value = value.Trim();
         }
         return value;
     }
}

然后在你的Pages课程中,类似

private string _folderName;
public string FolderName
{
    get { return _folderName.TrimIfNotNull(); }
    set { _folderName = value.TrimIfNotNull(); }
}

如果您正在使用C#6,如Jacob Krall所述,您可以直接使用null条件运算符,而不用担心扩展方法:

public string FolderName 
{ 
    get { return _folderName; } 
    set { _folderName = value?.Trim(); }
}

答案 5 :(得分:0)

请参阅下面的代码。 //您可以在将条目保存到数据库之前对其进行过滤。

          //About the null issue. You can use this.

          if(String.IsNullOrEmpty(txtusername.Text))
            {
                throw new Exception("Cannot be blank!");
            }

        //You can filter the entry before saving it into the database

        txtpageid.Text = book.PageID.Trim();
        txtfoldername.Text = book.FolderName.Trim();

答案 6 :(得分:-4)

        public string FolderName
        {
            get
            {
                return this.FolderName;
            }
            set
            {
                this.FolderName = value.Trim();
            }
        }