Возможно, это не лучший подход ...
Трудно сказать, но подсушивание контроллеров и выведение бизнес-логики могут помочь.Похоже, вы хотите сохранить функциональность действий B и C.
$.ajax({
type: "POST",
async: false,
dataType: 'json',
url: "ControllerA/ActionA",
data: { var1: some_value },
success: function (data) {
if (data == true) {
form.submit();
}
else if (data == false) {
}
});
public Class CalculationsA
{
public void DoCalculation() {}
}
public Class CalculationsB
{
public void DoCalculation() {}
}
public Class CalculationsC
{
public IQueryable<somethign> DoCalculation() {}
}
//_a is declared in Controller A as CalculationsA
//_b is declared in Controller B as CalculationsB
//_c is declared in Controller C as CalculationsC
// In ControllerA
public JsonResult ActionA(string var1)
{
_a.DoCalculation();
_slist = _b.DoCalculation().First().ToString();
Session["STRING"] = some_value;
_c.DoCalculation();
/* your other logic... */
return Json(retval, JsonRequestBehavior.AllowGet);
}
// In ControllerB
public JsonResult ActionB(string var1)
{
_b.DoCalculation();
return Json(false, JsonRequestBehavior.AllowGet);
}
public SelectList ActionC(string var1)
{
_c.DoCalculation();
Session["STRING"] = some_value;
return new SelectList(_storeOrderTimeDictionaryList, "Value", "Key");
}
Кстати, вы должны проверить Ninject , Castle Windsor, Structure Map или любой другой DI /Контейнер IOC, чтобы помочь вам проверить эту логику (и сделать ее более сухой).Попробуйте найти учебник по ninject asp.net mvc 2