教你什么在

普通文本只需使用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的始末啦