我见过许多使用匿名类型将数据传递给视图的示例。不过,我似乎错过了一些关键信息。考虑以下设计的例子:
public class BlogController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Title(object args)
{
return View(args);
}
}
Index.aspx调用
<%= Html.Action("Title", new { Name = "Jake" }) %>
title.ascx简直就是:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<h3><%= Model.Name %>'s Blog</h3>
导航到有问题的操作会导致运行时异常:
'object' does not contain a definition for 'Name'
我意识到还有其他方法可以做到这一点。我可以使我的视图强类型或将数据推送到ViewData对象。在这种特殊情况下,我希望能够传递任何具有Name属性并绑定到Name的对象。有什么我想念的吗?
答案 0 :(得分:4)
参数args
的类型为object
。当您将路线值传递给Html.Action
时,实际上您最终会得到一个名为string
的{{1}}参数,该参数当然不会绑定到参数Name
。
将您的电话改为:
args