Popup 编辑器使用 MVC 的编辑器模板,完全独立于 Kendo 的。如果您想将该字段标记为只读,则需要在代码中的模型中附加元数据属性。前任:
public class MyClassUsedInGrid
{
[System.ComponentModel.DataAnnotations.Editable(false)]
public string foobar {get;set;}
}
更新:
抱歉,原来答案不完整。您需要创建一个自定义模板来处理这个问题,因为内置模板不支持它(我在我的项目中有这个并且忘记了它)。为此,请在 /Views/Shared/EditorTemplates/string.cshtml 下创建一个视图(我将在 Razor 中展示它,不过移植到 aspx 语法很容易)。
代码如下所示:
@model string
@if(ViewData.ModelMetadata.IsReadOnly){
@Html.DisplayForModel()
}else{
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" })
}
这将正确处理可编辑元数据属性。当然这只是针对字符串,你应该对其他对象做类似的事情。如果您正在寻找其他内置模板的外观,请查看此站点:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates。 html
性能旁注:如果您只在应用程序的几个地方的一个地方执行此操作,最好将其放在 /Views/YourView/EditorTemplates/ 下。原因是内置模板被编译到框架中,并且通常工作得更快。或者将其保留在 Shared 文件夹中,但将其命名为 ExtendedString 之类的名称,然后在您查看标签属性中,您可以使用显式 UI 提示设置可编辑,如下所示:
[System.ComponentModel.DataAnnotations.Editable(false)]
[System.ComponentModel.DataAnnotations.UIHint("ExtendedString")]
public string foobar {get;set;}