【问题标题】:How to pass variables from one controller to another如何将变量从一个控制器传递到另一个控制器
【发布时间】:2014-06-20 12:49:43
【问题描述】:

我想将变量传递给其他控制器表名, 我正在尝试 ViewBag.Variable 但确实发送空值。

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

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);
    }

【问题讨论】:

  • 你能说明你是如何在你的视图中访问 ViewBag 的吗
  • 您使用 ViewBag 将数据从控制器传递到视图。不要将数据从控制器传递到控制器。

标签: asp.net-mvc dynamic controllers


【解决方案1】:

如果你想从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)
...
...

或者,如果您想要一个随处可用的“全局”变量,您可以将其分配给 Session,就像使用 ViewBag 一样

Session["myVariable"] = myVariable;

虽然我会警告不要使用会话:并非所有内容都属于会话状态。

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

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多