【发布时间】: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