1

匿名型を使用してデータをビューに渡す例をいくつか見てきました。ただし、重要な情報が不足しているようです。次の不自然な例を考えてみましょう。

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にバインドできるようにしたいと思います。足りないものはありますか?

4

1 に答える 1

4

パラメータargsはタイプobjectです。ルート値をに渡すとHtml.Action、実際には、パラメータにバインドされないというstring引数が返されます。Nameargs

通話を次のように変更します。

<%= Html.Action("Title", new { args = new { Name = "Jake" } }) %>
于 2011-08-24T16:55:58.980 に答える