如果我的术语不正确,我深表歉意。我刚进入一个使用Javascript和asp.net的项目。我对两者都不是很熟悉,并且正在尝试实现一些简单的功能或修复错误。目前,剃刀视图如下所示:

@{
    string rootUrl = Url.Action(MVC.Files.Files(Model.Id, null));
    Html.Telerik().ScriptRegistrar().Scripts(wa => wa.AddSharedGroup(@Url.AssetName(AssetGroups.FileBrowser))
                                                     .AddSharedGroup(@Url.AssetName(AssetGroups.SinglePageApps)))
    .OnDocumentReady(
    @<text>
        window.fileBrowser = fileBrowser('ls', 'file_breadcrumb', '@Model.Path', '@rootUrl');

         var runLink = "@Url.Action(MVC.Runs.Run(Model.Id, Model.ExperimentName.ToLegalUrl()))";

         // checking for the model
         if (@((Model.HasSettings.ToString().ToValue()) == true)) {
console.log("true");
         }
         else {
console.log("false");
}

         window.leftNav = new NavView({
            el: "#navview",
            collection: new NavItems(),
            items: [


我的页面模型具有属性HasSettings。基于HasSettings,我想在代码底部的items数组中填充某些项。我无法弄清楚它的语法。

我最初是从

if ('@Model.HasSettings') {

并且一直在尝试其他形式,但是我真的不确定要检查的语法是什么,以便可以填充项目数组。我知道如果我在此@块之外查看Model.HasSettings,它的计算结果为True或False。然后在控制台中,当我运行页面时,它说未定义True或False。

我的第一个问题是正确的语法是什么?

我的第二个问题是,我是否应该复制并粘贴整个块

window.leftNav = new NavView({
            el: "#navview",
            collection: new NavItems(),
            items: [


到每个if / else语句中,只有items数组不同。还是有一种更清洁的方法来做到这一点?提前致谢!

最佳答案

window.leftNav = new NavView({
  el: "#navview",
  collection: new NavItems(),
  items: [
@foreach(Setting item in Model.Settings){
    .... output items as javascript objects here
}
  ]});

08-25 17:07