gpt4 book ai didi

javascript - 从 javascript 链接到 .cshtml View

转载 作者:数据小太阳 更新时间:2023-10-29 04:27:53 25 4
gpt4 key购买 nike

如何从 javascript 文件直接指向 .cshtml View ?例如,为什么我不能将 .cshtml View 与 angular.js 一起使用?就像这个例子:

 .directive('encoder', ($timeout) => {
return {
restrict: 'E',
transclude: true,
scope: 'isolate',
locals: { service: 'bind' },
templateUrl: 'encoderTemplate.cshtml' // <-- that's not possible?
}
});

当然可以有一个返回任何你想要的操作方法,但我很好奇是否可以直接引用 razor View 。

最佳答案

如评论中所述,您不能直接提供 .cshtml 文件,但是,如果您愿意,可以使用 Controller 来呈现内容:

public class TemplateController : Controller
{
// create a ~/Views/Template/Encoder.cshtml file
public PartialViewResult Encoder()
{
return PartialView();
}
}

然后像使用 @Url.Action 一样引用它:

{
....
templateUrl: '@Url.Action("Encoder", "Template")'
}

来自评论

如果您的大部分 JavaScript 代码都在具有 Razor 访问权限的对象之外(例如外部 .js 文件),您仍然可以利用 Url 生成器,只是需要做一些不同的事情。例如,我可能会这样做:

public class TemplateController : Controller
{
// Add a child method to the templates controller that outputs default
// configuration settings (and, since it's a child action, we can re-use it)
[ChildActionOnly]
public PartialViewResult Index()
{
// You could build a dynamic IEnumerable<ConfigRef> model
// here and pass it off, but I'm just going to stick with a static view
return PartialView();
}
}

~/Views/Template/Index.cshtml

<script type="text/javascript">
if (typeof window.App === 'undefined'){
window.App = {};
}
App.Templates = {
Encoder: '@Url.Action("Encoder", "Template")',
Template1: '@Url.Action("Template1", "Template")',
Template2: '@Url.Action("Template2", "Template")'
};
</script>
@*
the template files would then reference `App.Templates.Encoder`
when they need access to that template.
*@
@Scripts.Render("~/js/templating")

Index.cshtml(或任何 View )

@* ... *@
@{ Html.RenderAction("Index", "Template"); }
@* ... *@

关于javascript - 从 javascript 链接到 .cshtml View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com