简体   繁体   English

来自传递参数的另一个控制器的Html.RenderAction

[英]Html.RenderAction from another controller with passed parameter

I'm having 2 models: Player and PlayerAchievement 我有2个模型: PlayerPlayerAchievement

 public class Player
 {
    [Required]
    public String clubName { get; set; }
    [Required]
    public String id { get; set; }
    [Required]
    public int number { get; set; }
    [Required]
    public String name { get; set; }
    [Required]
    public String position { get; set; }
    [Required]
    public DateTime dateOfBirth { get; set; }
    [Required]
    public string placeOfBirth { get; set; }
    //TODO: Remember to change variable name
    [Required]
    public double weight { get; set; }
    [Required]
    public double height { get; set; }
    [Required]
    public String description { get; set; }
    [Required]
    public String imageLink { get; set; }
    [Required]
    public Boolean status { get; set; }
}

public class PlayerAchievement
{
    [Key]        
    public String playerID { get; set; }               
    [Required]
    public String achievementName { get; set; }
    [Required]
    public int number { get; set; }
}

The Player has the Details view which show the detail information of player. 播放器具有“ 详细信息”视图,其中显示了播放器的详细信息。 I want to render ShowPlayerAchievement view in there. 我想在那里渲染ShowPlayerAchievement视图。 However, the ShowPlayerAchievement Action is in PlayerAchievement Controller 但是, ShowPlayerAchievement操作位于PlayerAchievement控制器中

public ActionResult ShowAchievementsList(String playerID)
{
   return View(_repository.GetPlayerAchievementsByPlayerID(playerID));
}

As you see above, the method requires the playerID of the player, so I tried this code of @Html.RenderAction in Details.cshtml of Player to see if it works, but it didn't. 如上所示,该方法需要播放器的playerID ,因此我在播放器的 Details.cshtml中尝试了@ Html.RenderAction的此代码,以查看其是否有效,但无效。

@Html.RenderAction("ShowAchievementsList", "PlayerAchievement", new { playerID = Model.id })

So to summarize, how can I call the ShowAchievementList action from PlayerAchievement controller with playerID parameter from the Player ? 因此,总而言之,我该如何使用Player的playerID参数从PlayerAchievement控制器调用ShowAchievementList动作?

UPDATE this code doesn't show error @Html.Action("ShowAchievementsList", "PlayerAchievement", new { playerID = Model.id }); 更新此代码不会显示错误@ Html.Action(“ ShowAchievementsList”,“ PlayerAchievement”,new {playerID = Model.id});

But I got an NullRefferenceException in constructor of PlayerAchievementRepository class. 但是我在PlayerAchievementRepository类的构造函数中得到了NullRefferenceException。

public class PlayerAchievementRepository : IPlayerAchievementRepository { 公共类PlayerAchievementRepository:IPlayerAchievementRepository {

    public List<PlayerAchievement> allPlayerAchievements;
    private XDocument playerAchievementData;

    public PlayerAchievementRepository()
    {
        allPlayerAchievements = new List<PlayerAchievement>();

        playerAchievementData = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/player_management.xml"));
//Error show here
        var playerAchievements = from playerAchievement in playerAchievementData.Descendants("player_achievement")                                     
                      select new PlayerAchievement((int) playerAchievement.Element("number"), playerAchievement.Element("playerID").Value, 
                          playerAchievement.Element("achievementName").Value);                allPlayerAchievements.AddRange(playerAchievements.ToList<PlayerAchievement>());
//other logic codes...

    }

in player_management.xml 在player_management.xml中

<player_achievement>
        <number>3</number>
        <playerId>01</playerId>
        <achievementName>European Cup</achievementName>
</player_achievement>

Try one of these two syntaxes: 请尝试以下两种语法之一:

 @{Html.RenderAction("ShowAchievementsList", "PlayerAchievement", new { playerID = Model.id });}

or 要么

 @Html.Action("ShowAchievementsList", "PlayerAchievement", new { playerID = Model.id });

Try the following 尝试以下

@{
@Html.RenderAction("ShowAchievementsList", "PlayerAchievement", new { playerID = Model.id })
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM