大家好我在控制器中有一个功能,我收到一个表单的信息,实际上我有这个代码:
public Actionresult functionOne(string a, string b, string c = "foo" )
我尝试将其转换为类似
的类public class bar
{
public string a {get;set;}
public string b {get;set;}
public string c {get;set;}
}
并将其作为对象接收
public Actionresult functionOne(bar b)
另外,我尝试将默认值设置为' c'但是没有用,我试过了:
public class bar
{
public string a {get;set;}
public string b {get;set;}
[System.ComponentModel.DefaultValue("foo")]
public string c {get;set;}
}
没有发生任何事情,我收到null
我也试过
public class bar
{
public string a {get;set;}
public string b {get;set;}
public string c
{
get
{
return c;
}
set
{
c="foo"; //I also tried with value
}
}
}
我该怎么做才能写出这个默认值?
感谢。
答案 0 :(得分:17)
如果您使用的是 C#6 ,则可以执行以下操作:
public class Bar {
public string a { get; set; }
public string b { get; set; }
public string c { get; set; } = "foo";
}
否则你可以这样做:
public class Bar {
public string a { get; set; }
public string b { get; set; }
private string _c = "foo";
public string c
{
get
{
return _c;
}
set
{
_c = value;
}
}
}
答案 1 :(得分:6)
1)使用对象的构造函数:
public class bar
{
public bar()
{
c = "foo";
}
public string a {get;set;}
public string b {get;set;}
public string c {get;set;}
}
2)利用新的自动属性默认值。 Note that this is for C# 6+:
public class bar
{
public string a {get;set;}
public string b {get;set;}
public string c {get;set;} = "foo";
}
3)使用支持字段
public class bar
{
var _c = "foo";
public string a {get;set;}
public string b {get;set;}
public string c {
get {return _c;}
set {_c = value;}
}
}
4)使用Null Coalescing Operator检查
public class bar
{
string _c = null;
public string a {get;set;}
public string b {get;set;}
public string c {
get {return _c ?? "foo";}
set {_c = value;}
}
}
答案 2 :(得分:4)
您是否尝试过设置C值的默认构造函数?
public class Bar
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public Bar()
{
C = "foo";
}
}
答案 3 :(得分:1)
您可以在构造函数
中指定默认值public class bar
{
public bar()
{
this.c = "foo";
}
public string a {get;set;}
public string b {get;set;}
public string c {get;set;}
}
每当创建bar
对象时,将调用构造函数,并使用" foo"初始化c
。
稍后当调用其他方法c
时,其值将更新为
public class bar
{
public bar()
{
this.c = "foo";
}
public string a {get;set;}
public string b {get;set;}
public string c {get;set;}
public void UpdadateValueofC(string updatedvalueofc)
{
this.c = updatedvalueofc;
}
}