asp.net-mvc - 来自另一个带有传递参数的 Controller 的 Html.RenderAction

标签 asp.net-mvc renderaction

我有 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; }
}

玩家详细信息 View ,显示玩家的详细信息。我想在那里渲染 ShowPlayerAchievement View 。但是,ShowPlayerAchievement 操作位于 PlayerAchievement Controller

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

正如你在上面看到的,该方法需要播放器的playerID,所以我在Player的Details.cshtml中尝试了@Html.RenderAction这段代码 看看它是否有效,但没有。

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

总而言之,如何使用 Player 中的 playerID 参数从 PlayerAchievement Controller 调用 ShowAchievementList 操作?

更新 这段代码不显示错误 @Html.Action("ShowAchievementsList", "PlayerAchievement", new {playerID = Model.id });

但是我在 PlayerAchievementRepository 类的构造函数中遇到 NullReferenceException。

公共(public)类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...

    }

在player_management.xml

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

最佳答案

尝试以下两种语法之一:

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

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

关于asp.net-mvc - 来自另一个带有传递参数的 Controller 的 Html.RenderAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212535/

相关文章:

javascript - 没有 javascript 时 AJAX 得到备份

asp.net-mvc - Html.RenderAction 是否创建单独的请求?

c# - 如何使用 Html.RenderAction 实现 ModelBinding?

model-view-controller - ActionFilterAttribute: 'Cancel' 属性在哪里?

c# - 如何将 Azure CDN 作为 ASP.NET MVC 工作流程的一部分包含在内?

asp.net-mvc - 如何读取datatable()中过滤数据的信息?

asp.net-mvc - XSLT vs MVC vs CSS 用于灵活的移动/普通布局

c# - 如何将字符串作为模型传递给 MVC 5 中的 View ?

asp.net-mvc - 在 MVC3 中渲染没有母版页的 View