2016-12-02 58 views
1

我有一个以下模型属性之一是projectDescription,它在SQL Server中生成一个ntext列。用于ntext属性的ASP.NET MVC textarea标记助手不起作用

型号

--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。但不是显示来自Db的ProjectDesctiption列的真实数据,而是奇怪地显示了查看页面的整个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

附注 - 从[文档](https://msdn.microsoft.com/en-AU/library/ms187993.aspx)_IMPORTANT! ntext,文本和图像数据类型将在未来版本的SQL Server中删除。避免使用这些数据类型_ –

+0

@StephenMuecke好点。我应该将其更改为nvarchar(max)或更好 - varchar(max),除非有令人信服的理由使用nvarchar。有问题的Db实际上是来自Ms Access Db的转换,我假设谁转换它可能使用Microsoft的迁移工具,该工具会自动将Access的文本列转换为SQL Server中的ntext。但在我们的例子中,我将检查是否需要nvarchar或varchar(max)是否足够。 – nam

回答

2

一个<textarea>不是自关闭标签,并因为你还没有 '封闭' 它,它显示下面的标签的HTML。

更改您的代码

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

你可能还想考虑将它重命名为'ProjectDescription' :) –

+0

你的建议奏效了(谢谢你的提及拼写错误)。 – nam