[英]Html.RenderAction from another controller with passed parameter
I'm having 2 models: Player and PlayerAchievement 我有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; }
}
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 })
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.