最近、ASP.NET MVC 表示テンプレートで問題が発生しました。これが私のモデルだとしましょう:
public class Model
{
public int ID { get; set; }
public string Name { get; set; }
}
これはコントローラーです:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new Model());
}
}
これが私の見解です:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<DisplayTemplateWoes.Models.Model>" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Index</title>
</head>
<body>
<div>
<%: Html.DisplayForModel() %>
</div>
</body>
</html>
何らかの理由ですべての文字列の表示テンプレートが必要な場合は、次のような String.ascx 部分ビューを作成します。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%: Model %> (<%: Model.Length %>)
そして、ここに問題があります。実行時に次の例外がスロー されます。
Model クラスの整数プロパティと文字列プロパティの両方に String.ascx が使用されているようです。私はそれが文字列プロパティにのみ使用されることを期待していました - 結局、Object.ascx や Int32.ascx ではなく String.ascx という名前になっています。
これは設計によるものですか?はいの場合 - それはどこかに文書化されていますか? そうでない場合 - バグと見なすことができますか?