2016-12-02 3 views
1

У меня есть следующие свойства модели, одним из которых является проектное оформление, которое создает столбец ntext на SQL Server.ASP.NET MVC textarea tag helper для свойства ntext не работает

Модель:

--some other properties here.... 

[Display(Name = "Project Title")] 
     [Column(TypeName = "varchar(125)")] 
     public string ProjectTitle { get; set; } 

[Column(TypeName = "ntext")] 
public string ProjectDesctiption { get; set; } 

--some other properties here.... 

Это свойство связано с textarea тег в View следующим образом. Но вместо отображения реальных данных из столбца ProjectDesctiption из Db он странно отображает всю исходную страницу html на странице «Просмотр страницы», как показано на рисунке ниже. Другие теги правильно отображают данные, как показано в поле ProjectTitle, на том же изображении ниже. Я думаю, что проблема связана с типом данных ntext и ASP Tag helper for textarea. Я проверил в базе данных, что максимальная длина некоторой ячейки данных в ProjectDescription довольно велика - около 61968 символов. Но мы хотим отображать данные из этого столбца с разумной длиной и шириной textarea с горизонтальными и вертикальными полосами прокрутки, чтобы пользователь мог хотя бы взглянуть на данные этого поля, чтобы получить представление о том, что такое описание проекта (например) или может быть скопировано/прошлое данных из textrea для какой-либо цели. Вопрос: Как я могу достичь этой цели?

Просмотр:

---some html here..... 
<div class="form-group"> 
     <label asp-for="ProjectTitle" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="ProjectTitle" class="form-control" /> 
      <span asp-validation-for="ProjectTitle" class="text-danger"></span> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label asp-for="ProjectDesctiption" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <textarea asp-for="ProjectDesctiption" class="form-control" rows="6" cols="15" /> 
      <span asp-validation-for="ProjectDesctiption" class="text-danger"></span> 
     </div> 
    </div> 
...some other html here... 

enter image description here

+0

Примечание стороны - от [Docs] (https://msdn.microsoft.com/en-AU/library/ms187993.aspx) _Внимание! Типы текстовых, текстовых и графических данных будут удалены в будущей версии SQL Server. Избегайте использования этих типов данных. –

+0

@StephenMuecke Хорошая точка. Я должен изменить его на nvarchar (max) или еще лучше - varchar (max), если нет веской причины использовать nvarchar. Db на самом деле является преобразованием из Ms Access Db, и я предполагаю, что кто-то его преобразовал, вероятно, использовал инструмент миграции Microsoft, который автоматически преобразовывал текстовые столбцы Access в ntext в SQL Server. Но я проверю, в нашем случае, нужен ли nvarchar или varchar (max) будет достаточно. – nam

ответ

2

<textarea> не закрывающиеся теги и потому, что вы не «закрыто», это, ее отображение HTML, который следует тег.

Изменить Вам код

<textarea asp-for="ProjectDesctiption" class="form-control" rows="6" cols="15"></textarea> 
+2

Возможно, вы также захотите переименовать его в 'ProjectDescription' :) –

+0

Ваше предложение сработало (спасибо за это и поймаем орфографическую ошибку). – nam