C# 属性在重定向到具有参数的另一个操作时变为NULL

C# 属性在重定向到具有参数的另一个操作时变为NULL,c#,asp.net-mvc,C#,Asp.net Mvc,我正在用C#进行MVC asp.net编程项目 我的arena类有5个属性: public int Id { get; set; } public int CharacterId { get; set; } public int Forfeit { get; set; } public System.DateTime Queued { get; set; } public virtual Character Character { get; set; } 当我使用以下方法从数据

我正在用C#进行MVC asp.net编程项目

我的
arena
类有5个属性:

 public int Id { get; set; }
 public int CharacterId { get; set; }
 public int Forfeit { get; set; }
 public System.DateTime Queued { get; set; }   
 public virtual Character Character { get; set; }
当我使用以下方法从数据库中获取
Arena
的模型时:

 var arenaModel = ctx.Arenas.FirstOrDefault(a => a.Character.AccountId == currentUserId);
 return RedirectToAction("BattleNPC", arenaModel);
没有任何内容为空,有一个字符,有id,放弃并排队。 但当我使用以下命令重定向到另一个操作时:

 var arenaModel = ctx.Arenas.FirstOrDefault(a => a.Character.AccountId == currentUserId);
 return RedirectToAction("BattleNPC", arenaModel);
在方法中使用断点

 public ActionResult BattleNPC(Arena model)
 {
     var character = model.Character; // <-- Null
 }
公共行动结果(竞技场模型)
{

var character=model.character;//该
重定向到操作
建议浏览器重定向到一个新的url。模型get在此过程中丢失,因为浏览器将只执行一个新的get请求。您可以在键值表单中添加参数。这将添加到url中

RedirectToAction('actionX', new { id = 123 })
然后,您的操作将根据给定的id获取数据对象

public ActionResult BattleNPC(int arenaId)
{
  var model = var arenaModel = ctx.Arenas.FirstOrDefault(a => a.Id == arenaId);
  var character = model.Character; // <-- Null
}
公共行动结果(国际援助)
{
var model=var arenaModel=ctx.Arenas.FirstOrDefault(a=>a.Id==arenaId);

var character=model.character;//
character
null
,因为在内部
RedirectToAction()
方法根据模型中每个属性的
.ToString()
值生成查询字符串值。对于上一个属性,它返回
&character=“yourAssembly.character”
无法绑定到tyeof
字符