C# 如何将参数传递给控制器构造函数?这样做对吗?
我可能没有做到这一点,因为我是这个框架的新手,希望您能提供帮助^^ 正如您在下面的代码中所看到的,在每个操作中,我都会找到要更新的表,然后调用表中的方法C# 如何将参数传递给控制器构造函数?这样做对吗?,c#,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,我可能没有做到这一点,因为我是这个框架的新手,希望您能提供帮助^^ 正如您在下面的代码中所看到的,在每个操作中,我都会找到要更新的表,然后调用表中的方法 public class TableController : Controller { private Lobby L; public TableController() { L = Lobby.Instance; } public ActionResult Index(uint i
public class TableController : Controller
{
private Lobby L;
public TableController()
{
L = Lobby.Instance;
}
public ActionResult Index(uint id)
{
Table T = L.Tables[id];
return View(T);
}
public ActionResult AddPlayer(byte pos, uint id)
{
Table T = L.Tables[id];
...
T.AddPlayer(p, pos);
...
}
...
}
但是我注意到我在每个方法中都做同样的事情,所以我想我可以将表转换为属性,这样我就不需要为每个操作找到它
我想要这样的东西:
public class TableController : Controller
{
private Lobby L;
private Table T;
public TableController(uint tableId)
{
L = Lobby.Instance;
T = L.Tables[tableId];
}
public ActionResult Index()
{
return View(T);
}
public ActionResult AddPlayer(byte pos)
{
...
T.AddPlayer(p, pos);
...
}
这种方法有什么错误吗
如果这在概念上是正确的,那么如何将表ID传递给构造函数?
这不起作用:(
通常,控制器构造函数用于注入依赖项,而不是数据。此外,在此阶段,
this。请求|响应|会话
以及其他基本属性仍然是null
请尝试以下方法:
protected override void Initialize(RequestContext requestContext)
{
var tableId = Convert.ToUInt32(requestContext.RouteData.GetRequiredString("tableId"));
L = Lobby.Instance;
T = L.Tables[tableId];
base.Initialize(requestContext);
}
通常,控制器构造函数用于注入依赖项,而不是数据。此外,在此阶段,
this。请求|响应|会话
以及其他基本属性仍然是null
请尝试以下方法:
protected override void Initialize(RequestContext requestContext)
{
var tableId = Convert.ToUInt32(requestContext.RouteData.GetRequiredString("tableId"));
L = Lobby.Instance;
T = L.Tables[tableId];
base.Initialize(requestContext);
}
将参数传递给操作,而不是控制器。 控制器将在每次请求发生时创建。 如果您一直需要静态属性,则可以使用它们。
可以从任何控制器或操作访问静态属性。将参数传递给操作而不是控制器。 控制器将在每次请求发生时创建。 如果您一直需要静态属性,则可以使用它们。
静态属性可以从任何控制器或操作访问。我宁愿创建将由所有控制器继承的BaseController,在BaseController上,您可以将属性和访问权限放在任何控制器上。。这将更清楚。。我宁愿创建将由所有控制器继承的BaseController,等等BaseController您可以从任何控制器放置您的属性和访问权限。这会更清楚。好的一点,大厅应该是静态的,因为我使用的是单体,因此访问始终是相同的大厅对象。谢谢!好的一点,大厅应该是静态的,因为我使用的是单体,因此访问始终是相同的大厅对象ct。谢谢!我怀疑这就是我想要的,让我在接受之前试一试。是的,这正是我想要做的!我怀疑这就是我想要的,让我在接受之前试一试。是的,它正是我想要做的!