2

用語が正しくない場合は、お詫び申し上げます。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') {

さまざまなフォームを試してきましたが、items配列にデータを入力できるように、どの構文でチェックするのかよくわかりません。この@ブロックの外側にあるModel.HasSettingsを見ると、TrueまたはFalseと評価されます。そして、コンソールでページを実行すると、TrueまたはFalseが未定義であると表示されます。

私の最初の質問は正しい構文は何ですか?

私の2番目の質問は、ブロック全体をコピーして貼り付けるだけでよいかということです。

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

各if/elseステートメントに、items配列のみが異なります。それとも、それを行うためのよりクリーンな方法はありますか?前もって感謝します!

4

1 に答える 1

0
window.leftNav = new NavView({
  el: "#navview",
  collection: new NavItems(),
  items: [
@foreach(Setting item in Model.Settings){
    .... output items as javascript objects here
}
  ]});
于 2013-03-26T02:11:51.063 に答える