在构造函数MVC 4中更改模型值

时间:2014-07-10 15:13:43

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

这是一个技术问题而非错误。

我的模型定义如下:

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

我的图像存储在服务器端。

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

在我的控制器中我构建了一个类似的模型:

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的值设置为我在设置它们的选择中寻找的路径吗?

1 个答案:

答案 0 :(得分:0)

由于你的问题非常含糊不清,我只能建议你可以在你的Property 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"
};