我是来自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正在正确修剪,但带有空格的完整值存储在表格中:
答案 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();
}
}