【问题标题】:Invoke Action Method with a parameter within same controller使用同一控制器内的参数调用动作方法
【发布时间】:2014-05-16 02:58:04
【问题描述】:
public ActionResult Faced(Vira model)
{
    HomeIndex helper = new HomeIndex();
    ...
}

上面的动作方法将在以下范围内调用:

public ActionResult BackToEmp()
{
    ..
    Vira vr = new Vira();
    Vira.Email="abc@abc.com";
    Vira.Password="123456";
    return RedirectToAction("Faced");
}

Faced 方法的模型参数,属于 Vira 类:

public class Vira{
    public string Email { get; set; }
    public string Password { get; set; }
}

我需要将 Vira 对象传递给方法 Faced。我认为 RedirectToAction 应该没问题。但是不知道怎么寄?最好的方法是什么?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    其实你应该可以做到:

    return this.Faced(vr);
    

    但是,如果您想确保用户的 url 发生变化……您必须使参数更简单:

    public ActionResult Faced(string email, string password)
    {
        HomeIndex helper = new HomeIndex();
    ...
    }
    public ActionResult BackToEmp()
    {
        return RedirectToAction("Faced", new { email = "abc@abc.com", password = "123456" });
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用RedirectToAction 的重载:

        public ActionResult BackToEmp()
        {
          ...
         Vira vr = new Vira();
          vr.Email="abc@abc.com";
          vr.Password="123456";
          return RedirectToAction("Faced", new {model =vr});
       }
      

      我希望它会有所帮助。

      【讨论】:

      • 这行不通,因为它是一个复杂的对象,对吗?相反,他必须单独传递字符串。
      【解决方案3】:

      Inanikian 的回答将完成工作,但是如果我可以提出建议,如果您使用 Vira 类的每个实例构建所需的信息而不是回想起来添加它,它会更容易阅读。例如,您可以添加一个二参数构造函数,如下所示:

      public class Vira {
          public string Email { get; private set; }
          public string Password { get; private set; }
          public Vira (string email, string password) {
              this.Email = email
              this.Password = password
          }
      }
      

      那么您的控制器操作将保持轻松:

      public ActionResult BackToEmp()
      {
           return RedirectToAction("Faced", new Vira("abc@abc.com", "123456"));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-09
        • 2019-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 1970-01-01
        相关资源
        最近更新 更多