2012-04-10 5 views
1

У меня есть метод в модели моего проекта asp.net mvc.Необязательный параметр в функции C#

public JsonResult GetProductsByDepList(string depID) 
{ 
    JsonResult jr = new JsonResult(); 
    var _product = from a in DataContext.GetProductsByDep(Convert.ToInt32(depID)) 
    select new { ID = a.ID, ProName = a.Name }; 
    jr.Data = _product.ToList(); 
    jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
    return jr; 
} 


public JsonResult GetProductByCatList(string depID, string catID) 
{ 
    JsonResult jr = new JsonResult(); 
    var _product = from a in 
    DataContext.GetProductsByCat(Convert.ToInt32(depID),Convert.ToInt32(catID)) 
    select new { ID = a.ID, ProName = a.Name }; 
    jr.Data = _product.ToList(); 
    jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
    return jr; 
} 

Я хочу объединить эти 2 метода, они работают одинаково, кроме параметра функции.

Любые идеи, пожалуйста.

+1

Учитывая, что эти два метода делают разные вещи, почему вы хотите, чтобы объединить их? – ChrisF

ответ

2
public JsonResult GetProductByCatList(string depID, string catID = "-1") 
{ 
    //common shared code 
    return jr; 
} 

Предполагая, что значение по умолчанию является -1 для catID

2

Вы можете попробовать:

public JsonResult GetProductByCatList(string depID, string catID = null) 
{ 
    JsonResult jr = new JsonResult(); 
    if (String.IsNullOrEmpty(catID)) 
    { 
     var _product = from a in DataContext.GetProductsByDep(Convert.ToInt32(depID)) 
     select new { ID = a.ID, ProName = a.Name }; 
     jr.Data = _product.ToList();  
    } else { 
     var _product = from a in 
     DataContext.GetProductsByCat(Convert.ToInt32(depID),Convert.ToInt32(catID)) 
     select new { ID = a.ID, ProName = a.Name }; 
     jr.Data = _product.ToList();  
    } 
    return jr; 
} 
2

Вы можете попробовать так:

public JsonResult GetProductsByDepList(string depID) 
    { 
     return GetProductByCatList(depID, null); 
    } 

    public JsonResult GetProductByCatList(string depID, string catID) 
    { 
     JsonResult jr = new JsonResult(); 
     var _product = null; 
     if (!string.IsNullOrEmpty(catID)) 
     { 
      _product = from a in 
       DataContext.GetProductsByCat(Convert.ToInt32(depID),Convert.ToInt32(catID)) 
       select new { ID = a.ID, ProName = a.Name }; 
     } 
     else 
     { 
      _product = from a in DataContext.GetProductsByDep(Convert.ToInt32(depID)) 
       select new { ID = a.ID, ProName = a.Name }; 
     } 

     jr.Data = _product.ToList(); 
     jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
     return jr; 
    } 
+0

У этого есть ошибки, вы не можете объявить '_product' дважды, и вы не можете просто положить бит' select' на свой собственный после операторов if/else. Также вам нужно 'return' в верхней функции. – joshuahealy

+0

Но в противном случае это имеет потенциал :) – joshuahealy

Смежные вопросы