教你哪些在

普通文本只需使用controltemplate里的东西,JS 文件里使用 Razor

<dxg:GridColumn.EditSettings >
     <dxg:LookUpEditSettings  x:Name="lookUp" IsTextEditable="False" DisplayMember="ProductName" ValueMember="ProductName" AutoPopulateColumns="False" >
          <dxg:LookUpEditSettings.PopupContentTemplate>
                    <ControlTemplate>
                        <dxg:GridControl x:Name="PART_GridControl">
                            <dxg:GridControl.Columns>
                                <dxg:GridColumn FieldName="ProductName_QuantityPerUnit" UnboundType="String"
                                                UnboundExpression="[ProductName]+' '+[QuantityPerUnit]"/>
                                <!--<dxg:GridColumn FieldName="ProductName"/>
                                <dxg:GridColumn FieldName="QuantityPerUnit"/>-->
                            </dxg:GridControl.Columns>
                            <dxg:GridControl.View>
                                <dxg:TableView AutoWidth="True" />
                            </dxg:GridControl.View>
                        </dxg:GridControl>
                    </ControlTemplate>
                </dxg:LookUpEditSettings.PopupContentTemplate>
                <dxg:LookUpEditSettings.StyleSettings>
                    <dxg:SearchLookUpEditStyleSettings />
           </dxg:LookUpEditSettings.StyleSettings>
      </dxg:LookUpEditSettings>
</dxg:GridColumn.EditSettings>

摘录

  那是grid表格里采纳lookup,普通文书只需利用controltemplate里的事物

小说紧假诺介绍了经过一个第三方类库RazorJS,完成Javascript 文件里应用
.Net MVC Razor 语法,很巧妙,推荐给我们

相信大家都试过在一个 View 里嵌套使用 javascript,那时就足以平昔运用
Razor 语法以调用 .NET 的一些艺术。如以下代码嵌套在一个 Razor 的 View
里:

澳门蒲京网址,?

1
2
3
4
5
<script>
 var currDate = '@DateTime.Now'; //直接调用.NET的方法
  
 console.log(currDate)
</script>

但另一种情况是,若是本身想在一个单身的 JS 文件里应用
Razor,这以上的点子可不行,因为MVC不会平昔表明JS文件,只有放到 Razor
view里才可以。然而在此我向大家推荐一个第三方类库,就可让你直接在单身的
JS 文件里选用 Razor

此类库名字就叫 RazorJS,那是一个开源的花色,可到以下地方下载源码:

https://bitbucket.org/djsolid/razorjs

抑或也能够直接通过Nuget进行安装:

?

1
PM> Install-Package RazorJS

OK,先说说那么些类库能为我们带来哪些吗。安装后您可以一向在 JS
文件里使用所有 .NET
支持的法子,如上边的代码就足以一向放到独立的JS文件里去选拔。其余你还足以在JS文件里引用.NET的全名空间,如要调用
File 对象来读取文本文件内容,就足以一向引用 System.IO 命名空间:

?

1
2
3
@using System.IO;
  
var s = 'Hello at @DateTime.Now \n @File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/web.config"))';

运转后就可直接在 JS 里获取到 web.config
文件里的持有情节。看样子挺不错吧,呵呵。那毕竟此类库是什么运作的呢?其实它是运用了一个叫
RazorEngine 的类库达到以上效果的。RazorEngine 是一个 Razor
的解释引擎,其职能相当有力,我事先也在部分门类中运用过。通过此引擎,你甚至足以一向在
win form 中动用 Razor 语法,呵,不知你有没悟出其利益了?

哦,不错,有了此引擎,就足以完全独立了 web 环境去选用 MVC 的 Razor
,这一个效果可让你充裕便宜地制定一些灵活的模板,如局地 email
模板,你可径直在模板里应用各类.NET
方法竟然自定义的靶子,然后动态变化想要的内容。OK,但以此引擎并不是这一次自身要介绍的事物,在此只是顺便说说啊

收起来说一个 RazorJS 的选择格局,倘诺您是直接通过 Nuget
安装的,那么就会活动帮您布署好
web.config,那是提议的设置格局,否则你就要本人加上 web.config
里的配置了,有好几处地点,那里也不知所终说,大家安装了后可相比之下一下就了解了。要选拔RazorJS 也很不难,只需选择以下语法引用你要的 JS 文件就足以了:

?

1
2
3
<p>
 @Html.RazorJSInline("~/Scripts/Example.js")
</p>

但是要小心一点的是,在你的 web.config 里会有一段配置允许 RazorJS
使用的目录,就是说你的JS文件必须置于此目录里才方可拔取此格局来引用:

1
2
3
4
5
<razorJSSettings handlerPath="~/razorjs.axd">
 <allowedPaths>
 <add path="~/Scripts" />
 </allowedPaths>
 </razorJSSettings>

最后要说一下的是其范围。有好的地点本来也有不佳的一端,由于其选拔的是
RazorEngine ,所以你不可以在 JS 里使用 MVC 的 HTML Helper 方法,即具有
@Html 初始的法子。另一个难题就是其不可以分辨 JS
里的表明代码,就是说假如您在诠释里使用了 .NET
的主意也一致会举办,即便您的法门正确就没难题,否则就会中断 JS
的实施直接报错了,所以不用以为没用的措施注释掉就足以了啊。

至于不只怕执行 @Html
helper的难题,我那边提供另一个化解办法,不过那就可修改其源代码,想折腾的情人可以试行。其实这么做也足以行使过多自定义的措施,特别灵活方便哦。下载了
RazorJS
源码后,你可径直在上头修改然后再行编译一个DLL出来,另一种方法就是将其源码当作另一个系列,直接加到你协调的花色中去。

在其源码中,打开 HtmlTemplateBase.cs
文件,你就可在此添加本身的艺术了,然后在这里丰盛的不二法门都可径直在 JS
里调用。如在源码中你可发现已打包的一个 Href 方法,可将 URL
转换为在呼吁客户端可用的
URL。依据此写法,大家就可添加自个儿的办法,如以下是自身封装一个动态获取国际化资源文件的主意,那样就可径直在JS里使用.NET的资源文件举办国际化了:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class HtmlTemplateBase : TemplateBase
 {
 //手工调用资源文件管理器
 private static ResourceManager resources = (ResourceManager)System.Type.GetType
  ("RazorJS.Resource").GetProperty("ResourceManager").GetValue(null, null);
  
 public HtmlTemplateBase()
 {
  Url = new UrlHelper(HttpContext.Current.Request.RequestContext);
 }
 public string Href(string originalUrl)
 {
  return Extensions.ResolveUrl(originalUrl);
 }
  
 public string GetLangText(string langKey)
 {
  根据key返回相关的语言
  return resources.GetString(langKey);
 }
  
 public UrlHelper Url { get; set; }
 }

然后在JS里一贯调用即可:

?

1
2
var s = '@GetLangText("CoderBlog")';
console.log(s);

运作完后,就可一贯在JS里输入 CoderBlog 那些key的内容啦