C# 控制器属性被清除

C# 控制器属性被清除,c#,asp.net-mvc,C#,Asp.net Mvc,我遇到了以下问题: 我调用一个方法,并在其中为属性id赋值,如下所示 public ActionResult WidokWydawcy(int userId) { id = userId; return View(id); } 然后在另一个方法中,我想利用id,但结果它的值是0,我在指定了它的值different之后确定了它的值 [ActionName("DodajAplikacjeWidok")] public ActionResult DodajAplikacjeWid

我遇到了以下问题:

  • 我调用一个方法,并在其中为属性id赋值,如下所示

    public ActionResult WidokWydawcy(int userId)
    {
        id = userId;
        return View(id);
    }
    
  • 然后在另一个方法中,我想利用id,但结果它的值是0,我在指定了它的值different之后确定了它的值

    [ActionName("DodajAplikacjeWidok")]
    public ActionResult DodajAplikacjeWidok(string adresAplikacji)
    {
        addsEntities1 addsContext = new Models.addsEntities1();
        aplikacja app = default(aplikacja);
        if (...)
            app = App.PobierzAplikacje(adresAplikacji, id);
        return View(app);
    }
    
在上面的代码中,id等于0。属性定义很简单

private int id;

标记为静态的,它可以工作。你能帮我理解一下吗?

这就是ASP.NET MVC的工作原理。您的属性值不会持久化。唯一的方法就是将id发送回第二个方法


请参见此

有进一步解释的链接吗?那是怎么做的?应该创建控制器的对象,但不能存储任何数据?@Maximus控制器是控制器,而不是数据库。您需要找到一种持久化该值的方法,例如通过查询字符串传递它。@Maximus-MVC控制器的行为与ASP.NET WebForm的代码隐藏非常不同。主要区别在于MVC是无状态的。既然说你可以将你的价值保存到一个会话对象中(我不会这样做,因为这在技术上使MVC变得卑鄙),但最终是你的问题,那么你会介绍什么样的正确方法?@Maximus,我会使用模型和强类型。通过这种方式,您可以将表单提交回操作,并让模型返回所需的值。如果您愿意,还可以通过jqueryajax请求调用它。再说一遍,选择哪条路取决于你自己。