0
更改映射規則我有一個模型的視圖模型AutoMapper
public class Product : BaseEntity
{
private string _name;
public string Name
{
get { return _name; }
private set{_name = value;}
}
public decimal Price { get; set; }
public double Weight { get; set; }
public double Width { get; set; }
public double Height { get; set; }
public double Depth { get; set; }
public DateTime DateAdded { get; set; }
...
public string GeneralInfo {get{//some get logic}...}
}
和視圖模型:
public sealed class ProductDetailsModel
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public double Weight { get; set; }
public double Width { get; set; }
public double Height { get; set; }
public double Depth { get; set; }
...
public string GeneralInfo {get;set;}
}
和控制器:
public class ProductController : Controller
{
...
public ActionResult Details(int id)
{
var product = _productRepository.GetProduct(id);
var productViewModel = Mapper.Map<ProductDetailsModel>(product);
return View(productViewModel);
}
...
}
一切都很正常,但.. 。我有一些獲取產品模型一般信息屬性的邏輯,它從數據庫中獲取這個一般信息,有時,當產品不'沒有一般信息,這個屬性返回null。我需要的是產生從可用的屬性如用,高度等喜歡的東西替代一般信息:
private string GenerateGeneralInfoFromProductProperties()
{
var generalInfoStringBuilder = new StringBuilder();
generalInfoStringBuilder.Append(@"<b>Width: </b>").Append(Width).Append("</br>");
generalInfoStringBuilder.Append(@"<b>Weight: </b>").Append(Weight).Append("</br>");
...
return generalInfoStringBuilder.ToString();
}
如果我這個邏輯添加到產品模型......
public class Product : BaseEntity
{
...
public string GeneralInfo
{
get
{
var gInfo = getGeneralInfoFromBD();
if (gInfo==null)
gInfo = GenerateGeneralInfoFromProductProperties();
return gInfo;
}
set { SetPropertyValue(ProductPropertyType.GeneralInfo, value); }
}
}
一切正常很好,但它會是錯誤的和不合邏輯的,因爲我有一個視圖模型來表示產品細節,所以我想添加這個邏輯來查看模型,但是我的視圖模型實例是由mapper創建的,產品視圖模型沒有構造函數通過產品實例來獲取它的一般信息,因爲,正如我所說的,它不需要在構造函數中。我如何添加這個「一般信息,如果null」替換邏輯映射器,或查看模型?