【问题标题】:How to implement in such a way that JavaScript gets executed within the Razor's @Html.Raw?如何实现 JavaScript 在 Razor 的 @Html.Raw 中执行?
【发布时间】:2020-12-03 17:18:46
【问题描述】:

以下是我们开发环境的一些详细信息:

-DevExpress 20.2.3(我们使用的是 DevExtreme)

-Microsoft Visual Studio Enterprise 2019(版本 16.4.6)

-ASP.NET Core 3.1.0

-AspNetCore.Mvc 3.1.0.0

如果我实现以下,则文档对象未定义:

 @using (Html.DevExtreme().NamedTemplate("upload-popup-template")) {
 
 @await Html.PartialAsync("UpldPopupContentTmpltPartial", new  HomeUpldPopupContentTmpltPartialViewModel()
 { SelectedUploadDataType =
 document.getElementById('HiddenSelectedUploadDataType').Value });
      }

即使我尝试在 Script javascript 标签中嵌入,它仍然指出文档对象未定义

@using (Html.DevExtreme().NamedTemplate("upload-popup-template")) {
 <script type="text/javascript">
     @await Html.PartialAsync("UpldPopupContentTmpltPartial", new HomeUpldPopupContentTmpltPartialViewModel()
 { SelectedUploadDataType =
 document.getElementById('HiddenSelectedUploadDataType').Value });
     </script> }

是否可以修改以下 Razor/Javascript 代码,使 JavaScript 在 @Html.Raw 中执行?

 @using (Html.DevExtreme().NamedTemplate("upload-popup-template")) {
 
 @await Html.PartialAsync("UpldPopupContentTmpltPartial", new
 HomeUpldPopupContentTmpltPartialViewModel()
 { SelectedUploadDataType =
 @Html.Raw("document.getElementById('HiddenSelectedUploadDataType').Value").ToString()
 }); }

【问题讨论】:

  • JavaScript 在浏览器上下文中执行。您正在尝试在服务器上下文中执行它。只是不会发生。
  • 补充@HereticMonkey 所说的内容。这两件事是分开发生的。剃刀语法中的任何内容在到达用户之前都已经编译。这意味着 @... 内部发生的任何事情都不会对您的 javascript 或如何处理它一无所知。您最好的选择是使用您的 javascript/html 创建一个链接,该链接针对接受您的参数“HiddenSelectedUploadDataType”的控制器操作,该参数在部分视图中发回您需要的 VM。

标签: javascript c# razor


【解决方案1】:

纠正我如果我错了,但从 DevExtreme NamedTemplate 你试图将其 JS 值传递给外部部分剃刀视图。

您需要做的是确保将 JS 嵌入到 Razor 语法中, 内模板。为此,请使用 JS() 表达式。

将本地 JS 变量传递给外部部分 Razor 视图的示例模板:

TestRazorView.cshtml

还请阅读更多关于 JS() 表达式的信息: https://docs.devexpress.com/AspNetCore/401153/devextreme-based-controls/concepts/razor-syntax/specify-options#new-js-expression

还请阅读有关 DevExtreme 模板的更多信息: https://docs.devexpress.com/AspNetCore/401029/devextreme-based-controls/concepts/templates

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多