如何从单独的javascript文件访问模型属性?(MVC)

How to access a model property from seperate javascript file? (MVC)

本文关键字:属性 模型 MVC 访问 文件 单独 javascript      更新时间:2024-01-13

现在我正在使用javascript中的模型属性作为传递给控制器的json对象中的值之一。问题是javascript将被分离在.js文件中,无法访问@Model。所以问题是;如何从单独的.js文件访问模型?

您可以像往常一样加载外部javascript,并将模型值作为属性发送到视图中的init方法:

<script type="text/url" src="externalscript.js"/>
<script type="text/javascript">
        $(function() {
            var model = home.views();
            model.init({
                modelProperty: '@Model.Property',
            });
</script>

然后你的externalscript.js看起来像:

(function (window) {
    home = window.home || {};
    home.views = function () {
        pub.init = function (options) {
            var property = options.modelProperty;
        };
        return pub;
})(window);

并且您可以在外部脚本中随心所欲地使用您的属性。

您可以尝试RazorJs(不幸的是,似乎不再受干扰)

在Javascript文件中编写Razor风格的C#或VB.NET。而且包含一个http处理程序,用于在需要时提供这些文件。

您可以执行类似这样的操作


视图/主页

@{
    ViewBag.Title = "Home Page";
}
@Html.RazorJSInclude("~/Scripts/App/TestRazorJS.js")
<button id="btnSearch" name="submit" type="button" onclick="LoadFromRazor()">Search</button>

脚本/App/TestRazorJS.js

function LoadFromRazor() {
    $.ajax({
        url: '@Url.Action("Test", "Home")',
        datatype: 'json',
        type: 'GET',
        cache: false,
        success: function () { console.log('done'); },
        error: function (xhr, status, error) {
          console.log(status);
        }
      });
    }