EditorFor не работает на классах в разных DLL

У меня есть решение с двумя проектами.

Один из них содержит классы слоя доступа к данным (DAL.dll), а другой - проект ASP.NET MVC. Проект ASP.NET MVC зависит от DAL.dll. Я хочу использовать классы DAL.dll в классе модели в проекте ASP.NET MVC.

Предположим, что у меня есть класс в DAL.dll следующим образом:

public class Test{

  public string Description{get;set;}

}

И в проекте ASP.NET MVC у меня есть класс модели, который использует Test.cs следующим образом:

public class ModelClass{

  Test CrudModel{get;set;}

  public string Description{get;set;} 

}

И, на мой взгляд (*.cshtml) у меня есть следующий код:

@Html.EditorFor(model => model.CrudModel.Description, "tinymce_jquery_min")

В приведенном выше коде, @Html.EditorFor не отображает шаблон "tinymce_jquery_min".

Но когда я использую следующий код, @Html.EditorFor делает шаблон "tinymce_jquery_min":

 @Html.EditorFor(model => model.Description, "tinymce_jquery_min")

Почему @Html.EditorFor отображает шаблон только для свойств, которые находятся в классе модели в проекте ASP.NET MVC, а не для свойств в другой DLL?

обновленный

Шаблон "tinymce_jquery_min" выглядит следующим образом:

<script src="@Url.Content("~/Scripts/tinymce/jquery.tinymce.js")"      type="text/javascript"></script>

   <script type="text/javascript">
   $(document).ready(function () {
        setTimeout(loadTinyMCE, 500);
    });

  function loadTinyMCE() {
      $('#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)').tinymce({


              script_url: '@Url.Content("~/Scripts/tinymce/tiny_mce.js")',
              theme: "advanced",

              height: "300",
              width: "400",
              verify_html: false,

              theme_advanced_buttons1: "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
                      theme_advanced_toolbar_location: "top",
              theme_advanced_toolbar_align: "left",
              theme_advanced_statusbar_location: "bottom",
              theme_advanced_resizing: false,


              convert_urls: false,


              template_external_list_url: "lists/template_list.js",
              external_link_list_url: "lists/link_list.js",
              external_image_list_url: "lists/image_list.js",
              media_external_list_url: "lists/media_list.js"

          });
  }





 </script>
        @Html.TextArea(string.Empty,  
          ViewData.TemplateInfo.FormattedModelValue  
       )

2 ответа

Решение

Спасибо ataravati за вашу помощь. Кажется, есть ошибка в моем шаблоне. Я должен измениться

   ViewData.TemplateInfo.GetFullHtmlFieldName

в

   ViewData.TemplateInfo.GetFullHtmlFieldId

Потому что ASP MVC создает другое значение для свойства id и свойства name в следующем коде:

@Html.EditorFor(model => model.CrudModel.Description, "tinymce_jquery_min")

затем

  ViewData.TemplateInfo.GetFullHtmlFieldName

не работает.

Вот как вы делаете свой частичный вид строго типизированным. Определите модель (которая в данном случае имеет тип string) и используйте Html.TextAreaFor для рендеринга вашей TextArea:

@model string

<script src="@Url.Content("~/Scripts/tinymce/jquery.tinymce.js")" type="text/javascript"></script>

<script type="text/javascript">
   $(document).ready(function () {
      setTimeout(loadTinyMCE, 500);
   });

   function loadTinyMCE() {
      $('#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)').tinymce({


              script_url: '@Url.Content("~/Scripts/tinymce/tiny_mce.js")',
              theme: "advanced",

              height: "300",
              width: "400",
              verify_html: false,

              theme_advanced_buttons1: "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
                      theme_advanced_toolbar_location: "top",
              theme_advanced_toolbar_align: "left",
              theme_advanced_statusbar_location: "bottom",
              theme_advanced_resizing: false,


              convert_urls: false,


              template_external_list_url: "lists/template_list.js",
              external_link_list_url: "lists/link_list.js",
              external_image_list_url: "lists/image_list.js",
              media_external_list_url: "lists/media_list.js"

      });
   }
</script>

@Html.TextAreaFor(model => model)
Другие вопросы по тегам