如何将变量从一个控制器传递到另一个控制器

时间:2014-06-20 12:49:43

标签: asp.net-mvc dynamic controllers

我想将变量传递给其他Controllers TableName, 我正在尝试ViewBag.Variable,但确实发送了null。

如果您可以将这些参数从一个控制器传递到另一个控制器 非常感谢您的帮助

public class HomeController : Controller
{
    public ActionResult Index()
    {
        string NombreVariable = "TablaUsuario";
        ViewBag.Variable = NombreVariable;
        return View();    
    }



    [ValidateInput(false)]
    public ActionResult GridViewPartial()
    {


        var entity = (IEnumerable)db.GetType()
                       .GetProperty(ViewBag.Variable)
                       .GetValue(db, null);
        var model = entity.Cast<object>();
        return PartialView("_GridViewPartial", model);


    }

  [HttpPost, ValidateInput(false)]

    public ActionResult GridViewPartialAddNew()
    {
        var entity = (dynamic)db.GetType() 
                       .GetProperty(ViewBag.Variable)
                       .GetValue(db, null);
        var model = entity;

        if (ModelState.IsValid)
        {

            try
            {
                Model.TableUsuario tb = new Model.TableUsuario();

                int contador=tb.GetType().GetProperties().Count();
                 //Coleccion[] cual = new Coleccion[contador];
                 int contadores = 0;
                string[] valores = new string[contador];

                foreach( var i in tb.GetType().GetProperties())
                {

                    valores[contadores] = "'" + Convert.ToString(GridViewExtension.GetEditValue<dynamic>(i.Name)) + "' AS " + i.Name ;


                    contadores += 1;

                }
                db.Database.ExecuteSqlCommand("insert into TableUsuario SELECT " + string.Join(",",valores));
                db.SaveChanges();
            }
            catch (Exception e)
            {
                ViewData["EditError"] = e.Message;
            }
        }
        else
            ViewData["EditError"] = "Please, correct all errors.";
        return PartialView("_GridViewPartial", model);
    }

1 个答案:

答案 0 :(得分:0)

如果你想从Controller_B调用Controller_A中的method_A,你可以这样做:

在Controller_B中

Controller_A myControllerA = new Controller_A();
myControllerA.method_A(myVariable);

在Controller_A

public void method_A(MyClass myVariable)
...
...

或者,如果您想要一个可在任何地方使用的“全局”变量,您可以使用与ViewBag类似的方式将其分配给Session

Session["myVariable"] = myVariable;

虽然我会警告不要使用会话:并非一切都属于会话状态。

我想这完全取决于你想要实现的目标。