我有 2 个模型:Player 和 PlayerAchievement
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/