У меня есть класс с именем LocalizedString
, который определен во внешней библиотеке, на которую ссылается мой проект asp.net mvc 3.
Я создал шаблон редактора с именем LocalizedString.cshtml
в папке ~\View\Shared\EditorTemplates
.
У меня есть следующая модель
public class Region
{
public LocalizedString Title { get; set; }
}
У меня есть следующая тестовая страница:
@model Region
@Html.EditorForModel()
@Html.EditorFor(x => x.Title)
Шаблон редактора для LocalizedString
не вызывается при вызове EditorForModel
, но он отображается при явном вызове EditorFor(x => x.Title)
, поэтому я знаю, что у меня нет проблем с рефералом.
Почему мой шаблон редактора игнорируется, когда я вызываю EditorForModel
(или его эквивалент EditorFor(x => x)
)
Обновления
Я создал новый проект для воспроизведения этого поведения. Я просто использовал интернет-приложение ASP.NET MVC 3 по умолчанию.
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
, но оно по-прежнему не отображается.