gpt4 book ai didi

c# MVC3 需要帮助使 Controller 方法更干

转载 作者:行者123 更新时间:2023-11-30 22:16:00 24 4
gpt4 key购买 nike

我有一个模型类:

public class Service
{

public int ID { get; set; }

public string description { get; set; }

public decimal price { get; set; }
public decimal cost { get; set; }
public decimal manDay { get; set; }
public decimal FTE{ get; set; }

}

我还有一个简单的 Controller ,它将遍历整个 Services 数据库表,并根据输入参数返回 Service 属性之一的 JSON 表:

public JsonResult _columns(int attributeCode)
{
IQueryable<Service> services = db.Services.AsQueryable();

MyJSONContainer jcontainer = new MyJSONContainer();

switch(attributeCode)
{
case 0:
foreach(Service s in services)
jcontainer.addEntry(s.description, s.price);
return Json(jcontainer);
case 1:
foreach(Service s in services)
jcontainer.addEntry(s.description, s.cost);
return Json(jcontainer);
case 2:
foreach(Service s in services)
jcontainer.addEntry(s.description, s.manDay);
return Json(jcontainer);
default:
foreach(Service s in services)
jcontainer.addEntry(s.description, s.FTE);
return Json(jcontainer);
}
}

现在这段代码运行良好,但不是很 DRY,特别是因为我将来可能会在 foreach 循环中为代码添加更多复杂性。

我很想知道在 DRY 设计模式方面具有更多专业知识的人会如何编写此函数。

谢谢

最佳答案

你可以在你的类中添加一个方法(或者作为辅助类中的扩展方法,如果你不想在你的模型类中有“attributeCode”逻辑,只需做一些小的改动)

public decimal GetValueFor(int attributeCode) {
switch(attributeCode) {
case 0 : return price;
case 1 : return cost;
case 2 : return manDay;
default: return FTE;
}
}

然后在你的行动中

public JsonResult _columns(int attributeCode)
{
var services = db.Services.AsQueryable();
var jcontainer = new MyJSONContainer();

foreach(var service in services)
jcontainer.addEntry(service.description, service.GetValueFor(attributeCode));

return Json(jcontainer);

}

关于c# MVC3 需要帮助使 Controller 方法更干,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com