【问题标题】:Accessing ViewModel in JS file (asp.net MVC)在 JS 文件中访问 ViewModel (asp.net MVC)
【发布时间】:2014-07-03 03:42:33
【问题描述】:

我一直在 Razor 中使用类似的东西

@section Includes {  
      <script type="text/javascript">
        var somestuffneeded = @(Html.Raw(Json.Encode(Model.datamember))); 


      </script>

}

但这看起来不太干净,因为它与布局位于同一个文件中(因为它不能直接在 .js 文件中工作)。 访问和查看在 .js 文件中传递的 ViewModel 有什么干净的替代方法吗?

【问题讨论】:

  • 对于简单的页面,我发现您上面的内容非常有效。对于更复杂的情况,使用 WebAPI 控制器可能是更好的选择。
  • 我知道但忘记了。我总是忘记一些事情。它必须存在于我关于堆栈溢出的旧问题中。

标签: javascript asp.net-mvc viewmodel


【解决方案1】:

您不能直接访问 .js 文件中的 ViewModel,因为它在您的 Web 服务器上是静态文件。但是有一种解决方法,您可以将 ViewModel 传递给带有参数的 .js 文件。

一些 .js 文件

function Common() {
    var _this = this;

    this.viewModel = null;

    this.showViewModel = function () {
       alert(_this.viewModel);
    };
}

var common = null;
$().ready(function () {
    common = new Common();
});

然后在加载视图时传递 ViewModel

@section Includes {  
  <script type="text/javascript">
    var somestuffneeded = @(Html.Raw(Json.Encode(Model.datamember))); 
    $(document).ready(function () {
          common.viewModel = somestuffneeded;
          common.showViewModel();
    });
  </script>
}

【讨论】:

  • 我认为他要求的是别的东西。他在说,我怎样才能避免var somestuffneeded = @... 声明。我知道你的回答是“你不能”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多