Jquery 在javascript中使用HtmlHelper与MVC和DataAnnotations jqGrid

Jquery 在javascript中使用HtmlHelper与MVC和DataAnnotations jqGrid,jquery,asp.net-mvc-4,jqgrid,data-annotations,Jquery,Asp.net Mvc 4,Jqgrid,Data Annotations,我创建了一个扩展方法,当它不包含在java脚本标记中时,它就可以工作 public static class ExtensionMethods { public static string TickWrap(this HtmlHelper source, MvcHtmlString mvcHtmlString) { return "'" + mvcHtmlString.ToHtmlString().Replace("'", "''") + "'"; } }

我创建了一个扩展方法,当它不包含在java脚本标记中时,它就可以工作

public static class ExtensionMethods
{
    public static string TickWrap(this HtmlHelper source, MvcHtmlString mvcHtmlString)
    {
        return "'" + mvcHtmlString.ToHtmlString().Replace("'", "''") + "'";
    }
}
在我看来,用法如下

@Html.TickWrap(Html.DisplayNameFor(m => Model.SampleDateTime))
它所做的只是抓取下面列出的数据注释的displayname属性,并将其显示为“Date和Time”,并在其周围加上记号

[Display(Name = "Date and Time")]
public DateTime SampleDateTime {get; set;}
然而,我似乎无法在脚本标签中实现这一点。我得到一个JavaScript严重错误语法错误。下面是我的视图中包含的脚本

<script type="text/javascript">
    $(function () {
        var displayName = @Html.TickWrap(Html.DisplayNameFor(m => Model.SampleDateTime))
        alert(displayName);
    });
</script>

在@Html.TickWrap(Html.DisplayNameFor(m=>Model.SampleDateTime))周围加上“”(引号)

在@Html.TickWrap(Html.DisplayNameFor(m=>Model.SampleDateTime))周围加上“”(引号)

如果要使用数据注释,应该创建从属性类扩展而来的类。然后使用PropertyInfo反射获取值


如果您想使用data anotation填充jqGrid的colName,我已经升级了我的jq.grid插件以支持数据注释,请检查此项以了解更多信息

如果您想使用数据注释,您应该创建从属性类扩展而来的类。然后使用PropertyInfo反射获取值


如果您想使用data anotation填充jqGrid的colNames,我已经升级了我的jq.grid插件以支持数据注释,请检查此项以了解更多信息

您是否尝试过在
@Html.TickWrap(Html.DisplayNameFor(m=>Model.SampleDateTime))周围放置
'
(引号)
?这就是我的extension method@Html.TickWrap的作用……它用“我的自定义显示名称”将数据注释指定的显示名称属性包装起来。我想我的问题与@Html在脚本标记中的使用方式有关,而不是Html的正常呈现方式,但我不确定。我对MVCI非常陌生,我发现大多数时候,当我在javascript中使用MVC@命令时,它们必须用引号括起来。试试看,如果它能起作用,我也不会感到惊讶。如果是的话,我会给出一个正式的答案“但这就引出了一个问题,那就是如何让它与带有记号“”的HtmlHelper扩展一起工作……我想我不确定这是否重要……但我会在早上尝试设置colNames,就像我用这个方法所说的那样。你试过在
'
(引号)周围放置
@Html.TickWrap(Html.DisplayNameFor(m=>Model.SampleDateTime))
?这就是我的extension method@Html.TickWrap的作用……它用“我的自定义显示名称”将数据注释指定的显示名称属性包装起来。我想我的问题与@Html在脚本标记中的使用方式有关,而不是Html的正常呈现方式,但我不确定。我对MVCI非常陌生,我发现大多数时候,当我在javascript中使用MVC@命令时,它们必须用引号括起来。试试看,如果它能起作用,我也不会感到惊讶。如果是的话,我会给出一个正式的答案“但这就引出了一个问题,那就是如何让它与带有记号的HtmlHelper扩展一起工作”…我想我不确定这是否重要…但我会在早上尝试设置colname,就像我用这个方法所说的那样。我接受了这个答案,因为它让我走上了正确的方向。无论出于何种原因,当在脚本标记中时,HtmlHelper代码需要用引号括起来。我甚至不需要TickWrap扩展方法。最后,我使用以下colNames:['@Html.DisplayNameFor(m=>headerMetadata.ParameterId)',@Html.DisplayNameFor(m=>headerMetadata.Location.DisplayName)',@Html.DisplayNameFor(m=>headerMetadata.Location.DisplayName)',@Html.DisplayNameFor(m=>headerMetadata.Parameter.DisplayName)',@Html.DisplayNameFor(m=>headerMetadata.SampleDateTime)',@Html.DisplayNameFor(m=>headerMetadata.ParameterValue1)],@Dan P我不确定你是否真的接受了它,它被提升了投票,但没有被接受为答案。我接受了答案,因为它让我走上了正确的方向。无论出于什么原因,当在脚本标记中时,HtmlHelper代码需要被括在引号中。我甚至不需要TickWrap扩展方法。最后,我填充了jqGrid通过使用以下colname在数据注释中使用元数据:['@Html.DisplayNameFor(m=>headerMetadata.ParameterId)',@Html.DisplayNameFor(m=>headerMetadata.Location.DisplayName)',@Html.DisplayNameFor(m=>headerMetadata.Parameter.DisplayName)',@Html.DisplayNameFor(m=>headerMetadata.SampleDateTime)“@Html.DisplayNameFor(m=>headerMetadata.ParameterValue1)”,@Dan P我不确定你是否真的接受了它,它被提升了投票,但没有被接受为答案。
colNames: ['ParameterId','Location', 'Parameter Name', 'Date and Time', 'Parameter Value']