我有一個名爲LocalizedString
的類,它是在我的asp.net mvc 3項目中引用的外部庫中定義的。爲什麼我在調用EditorForModel時忽略編輯器模板?
我在~\View\Shared\EditorTemplates
文件夾中創建了一個名爲LocalizedString.cshtml
的編輯器模板。
我有以下型號
public class Region
{
public LocalizedString Title { get; set; }
}
我有以下的測試頁:
@model Region
@Html.EditorForModel()
@Html.EditorFor(x => x.Title)
爲LocalizedString
編輯模板時,我打電話EditorForModel
不會被調用,但它確實使我明確地請致電EditorFor(x => x.Title)
,以便我知道我沒有推薦問題。
爲什麼(或等值EditorFor(x => x)
)當調用EditorForModel
忽略我的編輯模板
更新
我創建了一個新的項目,以重現此問題。我只使用默認的ASP.NET MVC 3 Internet應用程序。
Index.cshtml
@model MvcApplication1.Models.Region
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
@Html.EditorForModel()
HomeController.cs
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View(new Region());
}
}
}
Region.cs
namespace MvcApplication1.Models
{
public class Region
{
public Region()
{
this.Name = "RegionInstance";
this.Title = new LocalizedString();
}
public string Name { get; set; }
public LocalizedString Title { get; set; }
}
}
個LocalizedString.cs
namespace MvcApplication1.Models
{
public class LocalizedString
{
public LocalizedString()
{
this.Name = "LocalizedStringInstance";
}
public string Name { get; set; }
}
}
如果你運行這個程序,輸出將只顯示該區域的名稱的文本輸入。內容永遠不會輸出LocalizedString.cshtml。
我也嘗試使用UIHint
而不是Region.Title
屬性,但它仍然不顯示。
這真的很奇怪。它應該基於你的描述工作。你在'LocalizedString'上試過'UIHint'嗎?您發佈的內容中沒有任何內容顯示錯誤可能在哪裏。 – Buildstarted