在构造器MVC中更改模型值

本文关键字:模型 构造器 MVC | 更新日期: 2023-09-27 18:12:16

这是一个技术问题,不是bug。

我有一个这样定义的模型:

public string ModelId {get; set;}
public string OtherValue {get; set;}

和我有图像存储在服务器端。

我希望用我的图片代替otherValue制作模型的表格列表,所以我想知道它是否可能,如果它可以被认为是一个很好的方法来改变模型。这两个模型是其他更复杂模型的包装器。

在我的控制器中,我建立了这样一个模型:

var data = _db.OriginalModel.Where(o => o.OriginalModelId == tempId).ToList();
var model = data.Select( d => new Model
{
    ModelId = d.OriginalModelId,
    OtherValue = d.SelectValue
});

这就引出了我的问题:

我可以在模型中绑定数据如下:

public Model(){
   switch(OtherValue){
        case "UP" :
         OtherValue = "pathToImage";
         break;
        case "DOWN" :
         OtherValue = "pathToImage2";
         break;
         etc...
    }
}

从我测试到现在这不起作用,是否有另一种方式不是:直接将OtherValue的值设置为我在设置它们的选择中寻找的路径?

在构造器MVC中更改模型值

既然你的问题是非常模糊和模棱两可的,我只能建议也许你应该写你的逻辑在你的属性Setter:

public class MyClass
{
  private string _otherValue;
  public string ModelId {get; set;}
  public string OtherValue 
  {
    get 
    {
      return this._otherValue;  
    }
    set
    {
      switch(value){
        case "UP" :
          _otherValue = "pathToImage";
          break;
        case "DOWN" :
          _otherValue = "pathToImage2";
          break;
        // etc...
      }
    }
  }    
}

你的标题建议改变构造函数中的值,但你绝对没有使用构造函数逻辑与参数的代码示例。

var a = new MyModel();
a.ModelId = 1;
a.OtherValue = "DOWN";

的字面意思与

相同
var a = new MyModel
{
  ModelId = 1,
  OtherValue = "DOWN"
};