我有以下View代码,它返回当前项目的showid,并调用action来从其他动作加载节目的信息,并将其显示在局部视图中。
@{var bodyText = @x.title.ToString();
Int16 showid = Convert.ToInt16(@x.showId);
<img src=@Html.Action("_ShowThumbnail", "Thumbnail", showid);
我的路线如下
routes.MapRoute(
name: "Thumbnail",
url: "Thumbnail/_ShowThumbnail/{showid}",
defaults: new { controller = "Thumbnail", action = "_ShowThumbnail", showid = UrlParameter.Optional }
);
我的行动
public ActionResult _ShowThumbnail(Int16 showid)
{
try
{
WebClient webClient = new WebClient();
var programs = webClient.DownloadString("
使用debug我在所有位置都看到了showid的正确值,但仍然得到Null异常。有人有想法吗?
答案 0 :(得分:0)
第一个问题是您的showid
变量与{showid}
占位符不匹配。相反,您只是将Int16
值作为匿名参数对象传递给Html.Action()
方法,该方法不会做任何事情。
第二个问题是虽然{showid}
占位符在路径中是可选的,但方法参数仍然是Int16
因此是必需的 - 因此您需要将其置为可空({{1} })或将方法的Int16? showid
版本添加到控制器。
如果要修复ActionResult _ShowThumbnail()
调用,则需要正确设置匿名对象:
Html.Action()