teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

質問削除の取り消し

2017/11/01 23:25

投稿

cancat
cancat

スコア313

title CHANGED
@@ -1,1 +1,1 @@
1
- 回答がな。回答がない。
1
+ リンクをクリックしたときに、左のメニューを制御したです
body CHANGED
@@ -1,1 +1,181 @@
1
- 回答がない回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。
1
+ こんにちは
2
+ Windows10でASP.NET MVCのアプリケーションを開発しています。
3
+ Visual Studio 2017 Communityを使っています。
4
+ ###前提・実現したいこと
5
+ データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
6
+ これを修正したいです。
7
+ ###試したこと
8
+ (1)データベースから、User一覧を取得し、_Main.cshtmlに展開して、リンクとして表組しました。
9
+ (2)リンクをクリックすると、dashboardのページを開きます。
10
+ (3)ところが、左に表示しているメニューが、ダッシュボードではなく、サポートのところになってしまっています。
11
+ ###発生している問題・エラーメッセージ
12
+ データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
13
+ ###該当のソースコード
14
+ ```C#
15
+ _LeftMenu.cshtml
16
+ <ul class="sidebar-menu">
17
+ @*ダッシュボード*@ @Html.Partial("_LeftMenuContentDashboard")
18
+ @*ユーザー*@ @Html.Partial("_LeftMenuContentUser")
19
+ @*サポート*@ @Html.Partial("_LeftMenuContentSupport")
20
+ @*マニュアル*@ @Html.Partial("_LeftMenuContentManual")
21
+ </ul>
22
+ ```
23
+ ```C#
24
+ Userの_Main.cshtml
25
+ @Html.RouteLink(
26
+ @Html.DisplayFor(modelitem => Model.UsersData[i].UserId), new { Controller = "Dashboard", Action = "Index",
27
+ userid = @Html.DisplayFor(modelitem => Model.UsersData[i].UserId)
28
+ })
29
+ ```
30
+ これでリンクはできています。クリックでDashboardに遷移します。
31
+ ```C#
32
+ _LeftMenuContentDashboard.cshtml
33
+ @using MyApp.App_GlobalResources
34
+ <li class="treeview">
35
+ <a href="/Dashboard/Index">
36
+ <i class="fa fa-dashboard" style="font-size: 18px"></i>
37
+ <span style="padding-left: 20px">ダッシュボード</span>
38
+ </a>
39
+ </li>
40
+ ```
41
+ これが左メニューのダッシュボードのところ。部分ビューです。
42
+ このダッシュボードをクリックすると、ダッシュボードのところが反転して選択していることがわかります。
43
+ ```JavaScript
44
+ $(document).ready(function () {
45
+ var buttonExport = document.getElementsByClassName("highcharts-button");
46
+ if (buttonExport.length > 0) {
47
+ $(buttonExport).click(function () { $('.highcharts-contextmenu > div > div').first().html("@Resource.ExportButtonTitle") });
48
+ }
49
+ SetMainMenuFocus();
50
+ });
51
+ function myFunction() {
52
+ document.getElementById("hideTreeView1").style.display = 'none';
53
+ document.getElementById("hideTreeView2").style.display = 'none';
54
+ document.getElementById("hideTreeView3").style.display = 'none';
55
+ }
56
+ /* Menu */
57
+ function SetMainMenuFocus() {
58
+ if (document.location.href == (document.location.protocol + '//' + document.location.hostname + '/')
59
+ || document.location.href.lastIndexOf("Top") > -1) {
60
+ OpenParent($("ul.sidebar-menu > li.treeview").first());
61
+ return;
62
+ }
63
+ var currentUrl = document.location.pathname;
64
+ var link = $("ul.sidebar-menu > li.treeview > ul.treeview-menu > li > aside.left-side > a");
65
+ var isMatchLink = null;
66
+ if (link != null) {
67
+ $.each(link, function () {
68
+ var href = $(this).attr('href');
69
+ if (href != null && href != '' && (IsmatchUrl(currentUrl, href) || IsmatchUrl(href, currentUrl))) {
70
+ isMatchLink = $(this);
71
+ return true;
72
+ }
73
+ });
74
+ if (isMatchLink == null) {
75
+ $.each(link, function () {
76
+ var href = $(this).attr('href');
77
+ var currentUrl_Index;
78
+ if (currentUrl.lastIndexOf("/") == currentUrl.length - 1) {
79
+ currentUrl_Index = currentUrl + "Index";
80
+ } else {
81
+ currentUrl_Index = currentUrl + "/Index";
82
+ }
83
+ if (href != null && IsmatchUrl(currentUrl_Index, href)) {
84
+ isMatchLink = $(this);
85
+ return true;
86
+ }
87
+ });
88
+ }
89
+ if (isMatchLink != null) {
90
+ var parent = isMatchLink.closest('ul.treeview-menu');
91
+ while (parent != null && (parent.is("ul") || parent.is('li'))) {
92
+ OpenParent(parent);
93
+ parent = parent.parent();
94
+ }
95
+ }
96
+ $.each(link, function () {
97
+ $(this).children('div.menu-item').removeClass('menu-item-hover');
98
+ });
99
+ isMatchLink.children('div.menu-item').addClass('menu-item-hover');
100
+ }
101
+ }
102
+ function OpenParent(element) {
103
+ if (element != null) {
104
+ if (element.is('li')) {
105
+ element.addClass("active");
106
+ }
107
+ else if (element.is("ul")) {
108
+ element.css("display", "block");
109
+ }
110
+ }
111
+ }
112
+ function IsmatchUrl(compairWithUrl, toCompairUrl) {
113
+ if (compairWithUrl.indexOf(toCompairUrl) > -1) {
114
+ return true;
115
+ }
116
+ return false;
117
+ }
118
+ ```
119
+ メニューのJavaScript。全文。ひょっとして、これのどこかで設定するのでしょうか?
120
+ まえのJavascriptの質問と併せて考えると、
121
+ ```Javascript
122
+ function OpenParent(element) {
123
+ if (element != null) {
124
+ if (element.is('li')) {
125
+ element.addClass("active");
126
+ }
127
+ else if (element.is("ul")) {
128
+ element.css("display", "block");
129
+ }
130
+ }
131
+ }
132
+ ```
133
+ が濃厚です。
134
+ これがメニュー全部で走るので、最後の項目がactiveになるのではないか。
135
+ とすると、いま表示したいメニュー(ダッシュボード)を引数で与えて、それとマッチしたとき、と書けばよいのでは。
136
+ C#ならかんたんで、
137
+ ダッシュボードをtargetstringに入れるとすると、
138
+ ```
139
+ function OpenParent(element, string targetstring) {
140
+ if (element != null) {
141
+ if (element.is('li') && element.Contains(targetstring)) {
142
+ element.addClass("active");
143
+ }
144
+ else if (element.is("ul")) {
145
+ element.css("display", "block");
146
+ }
147
+ }
148
+ }
149
+ ```
150
+ でよいはずなのですが・・・・。
151
+ 書いてみました。これで、
152
+ 例外 下記ソースコードの行 75、列 9 で発生しました。http://localhost:0000/Scripts/sidemenu.js
153
+ 0x8000ffff - JavaScript runtime error: オブジェクトの呼び出しが無効です が発生しました
154
+ とのことです。
155
+ keywordには、Dashboardという文字を入れています。
156
+ ```Javascript
157
+ function OpenParent(element, keyword) {
158
+ if (element != null) {
159
+ try {
160
+ if (element.is('li') &&
161
+ -1 < element.context.__proto__.pathname.indexOf(keyword)//<--この行でエラー。
162
+ ) {
163
+ element.addClass("active");
164
+ }
165
+ else if (element.is("ul")) {
166
+ element.css("display", "block");
167
+ }
168
+ }
169
+ catch (e) {
170
+ error = e;
171
+ }
172
+ }
173
+ }
174
+ ```
175
+ ###補足情報(言語/FW/ツール等のバージョンなど)
176
+ Microsoft Visual Studio Community 2017
177
+ Version 15.0.26228.9 D15RTWSVC
178
+ Microsoft .NET Framework
179
+ Version 4.6.01586
180
+ です。
181
+ よろしくお願いします。

3

回答がない。回答がない。

2017/11/01 23:25

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- リンクをクリックしたときに、左のメニューを制御したです
1
+ 回答がな。回答がない。
body CHANGED
@@ -1,206 +1,1 @@
1
- こんにちは
2
- Windows10でASP.NET MVCのアプリケーションを開発しています。
3
- Visual Studio 2017 Communityを使っています。
4
-
5
- ###前提・実現したいこと
6
- データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
7
- これを修正したいです。
8
-
9
- ###試したこと
10
- (1)データベースから、User一覧を取得し、_Main.cshtmlに展開して、リンクとして表組しました。
11
- (2)リンクをクリックすると、dashboardのページを開きます。
12
- (3)ところが、左に表示しているメニューが、ダッシュボードではなく、サポートのところになってしまっています。
13
-
14
- ###発生している問題・エラーメッセージ
15
- データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
16
-
17
- ###該当のソースコード
18
- ```C#
19
- _LeftMenu.cshtml
20
- <ul class="sidebar-menu">
21
- @*ダッシュボード*@ @Html.Partial("_LeftMenuContentDashboard")
22
- @*ユーザー*@ @Html.Partial("_LeftMenuContentUser")
23
- @*サポート*@ @Html.Partial("_LeftMenuContentSupport")
24
- @*マニュアル*@ @Html.Partial("_LeftMenuContentManual")
25
- </ul>
26
- ```
27
-
28
- ```C#
29
- Userの_Main.cshtml
30
- @Html.RouteLink(
31
- @Html.DisplayFor(modelitem => Model.UsersData[i].UserId), new { Controller = "Dashboard", Action = "Index",
32
- userid = @Html.DisplayFor(modelitem => Model.UsersData[i].UserId)
33
- })
34
- ```
35
- これでリンクはできています。クリックでDashboardに遷移します。
36
-
37
-
38
- ```C#
39
- _LeftMenuContentDashboard.cshtml
40
- @using MyApp.App_GlobalResources
41
- <li class="treeview">
42
- <a href="/Dashboard/Index">
43
- <i class="fa fa-dashboard" style="font-size: 18px"></i>
44
- <span style="padding-left: 20px">ダッシュボード</span>
45
- </a>
46
- </li>
47
- ```
48
- これが左メニューのダッシュボードのところ。部分ビューです。
49
- このダッシュボードをクリックすると、ダッシュボードのところが反転して選択していることがわかります。
50
-
51
- ```JavaScript
52
- $(document).ready(function () {
53
- var buttonExport = document.getElementsByClassName("highcharts-button");
54
- if (buttonExport.length > 0) {
55
- $(buttonExport).click(function () { $('.highcharts-contextmenu > div > div').first().html("@Resource.ExportButtonTitle") });
56
- }
57
- SetMainMenuFocus();
58
- });
59
- function myFunction() {
60
- document.getElementById("hideTreeView1").style.display = 'none';
61
- document.getElementById("hideTreeView2").style.display = 'none';
62
- document.getElementById("hideTreeView3").style.display = 'none';
63
- }
64
-
65
- /* Menu */
66
- function SetMainMenuFocus() {
67
- if (document.location.href == (document.location.protocol + '//' + document.location.hostname + '/')
68
- || document.location.href.lastIndexOf("Top") > -1) {
69
- OpenParent($("ul.sidebar-menu > li.treeview").first());
70
- return;
71
- }
72
- var currentUrl = document.location.pathname;
73
- var link = $("ul.sidebar-menu > li.treeview > ul.treeview-menu > li > aside.left-side > a");
74
- var isMatchLink = null;
75
- if (link != null) {
76
- $.each(link, function () {
77
- var href = $(this).attr('href');
78
- if (href != null && href != '' && (IsmatchUrl(currentUrl, href) || IsmatchUrl(href, currentUrl))) {
79
- isMatchLink = $(this);
80
- return true;
81
- }
82
- });
83
-
84
- if (isMatchLink == null) {
85
- $.each(link, function () {
86
- var href = $(this).attr('href');
87
-
88
- var currentUrl_Index;
89
- if (currentUrl.lastIndexOf("/") == currentUrl.length - 1) {
90
- currentUrl_Index = currentUrl + "Index";
91
- } else {
92
- currentUrl_Index = currentUrl + "/Index";
93
- }
94
-
95
- if (href != null && IsmatchUrl(currentUrl_Index, href)) {
96
- isMatchLink = $(this);
97
- return true;
98
- }
99
- });
100
- }
101
-
102
- if (isMatchLink != null) {
103
- var parent = isMatchLink.closest('ul.treeview-menu');
104
-
105
- while (parent != null && (parent.is("ul") || parent.is('li'))) {
106
- OpenParent(parent);
107
- parent = parent.parent();
108
- }
109
- }
110
-
111
- $.each(link, function () {
112
- $(this).children('div.menu-item').removeClass('menu-item-hover');
113
- });
114
- isMatchLink.children('div.menu-item').addClass('menu-item-hover');
115
- }
116
- }
117
-
118
- function OpenParent(element) {
119
- if (element != null) {
120
- if (element.is('li')) {
121
- element.addClass("active");
122
- }
123
- else if (element.is("ul")) {
124
- element.css("display", "block");
125
- }
126
- }
127
- }
128
-
129
- function IsmatchUrl(compairWithUrl, toCompairUrl) {
130
- if (compairWithUrl.indexOf(toCompairUrl) > -1) {
131
- return true;
132
- }
133
- return false;
134
- }
135
- ```
136
- メニューのJavaScript。全文。ひょっとして、これのどこかで設定するのでしょうか?
137
-
138
- まえのJavascriptの質問と併せて考えると、
139
-
140
- ```Javascript
141
- function OpenParent(element) {
142
- if (element != null) {
143
- if (element.is('li')) {
144
- element.addClass("active");
145
- }
146
- else if (element.is("ul")) {
147
- element.css("display", "block");
148
- }
149
- }
150
- }
151
- ```
152
- が濃厚です。
153
- これがメニュー全部で走るので、最後の項目がactiveになるのではないか。
154
- とすると、いま表示したいメニュー(ダッシュボード)を引数で与えて、それとマッチしたとき、と書けばよいのでは。
155
-
156
- C#ならかんたんで、
157
-
158
- ダッシュボードをtargetstringに入れるとすると、
159
- ```
160
- function OpenParent(element, string targetstring) {
161
- if (element != null) {
162
- if (element.is('li') && element.Contains(targetstring)) {
163
- element.addClass("active");
164
- }
165
- else if (element.is("ul")) {
166
- element.css("display", "block");
167
- }
168
- }
169
- }
170
- ```
171
- でよいはずなのですが・・・・。
172
-
173
- 書いてみました。これで、
174
- 例外 下記ソースコードの行 75、列 9 で発生しました。http://localhost:0000/Scripts/sidemenu.js
175
- 0x8000ffff - JavaScript runtime error: オブジェクトの呼び出しが無効です が発生しました
176
- とのことです。
177
- keywordには、Dashboardという文字を入れています。
178
-
179
- ```Javascript
180
- function OpenParent(element, keyword) {
181
- if (element != null) {
182
- try {
183
- if (element.is('li') &&
184
- -1 < element.context.__proto__.pathname.indexOf(keyword)//<--この行でエラー。
185
- ) {
186
- element.addClass("active");
187
- }
188
- else if (element.is("ul")) {
189
- element.css("display", "block");
190
- }
191
- }
192
- catch (e) {
193
- error = e;
194
- }
195
- }
196
- }
197
- ```
198
-
199
- ###補足情報(言語/FW/ツール等のバージョンなど)
200
- Microsoft Visual Studio Community 2017
201
- Version 15.0.26228.9 D15RTWSVC
202
- Microsoft .NET Framework
203
- Version 4.6.01586
204
-
205
- です。
206
- よろしくお願いします。
1
+ 回答がない回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。

2

あddd

2017/10/30 13:38

投稿

cancat
cancat

スコア313

title CHANGED
File without changes
body CHANGED
@@ -170,6 +170,32 @@
170
170
  ```
171
171
  でよいはずなのですが・・・・。
172
172
 
173
+ 書いてみました。これで、
174
+ 例外 下記ソースコードの行 75、列 9 で発生しました。http://localhost:0000/Scripts/sidemenu.js
175
+ 0x8000ffff - JavaScript runtime error: オブジェクトの呼び出しが無効です が発生しました
176
+ とのことです。
177
+ keywordには、Dashboardという文字を入れています。
178
+
179
+ ```Javascript
180
+ function OpenParent(element, keyword) {
181
+ if (element != null) {
182
+ try {
183
+ if (element.is('li') &&
184
+ -1 < element.context.__proto__.pathname.indexOf(keyword)//<--この行でエラー。
185
+ ) {
186
+ element.addClass("active");
187
+ }
188
+ else if (element.is("ul")) {
189
+ element.css("display", "block");
190
+ }
191
+ }
192
+ catch (e) {
193
+ error = e;
194
+ }
195
+ }
196
+ }
197
+ ```
198
+
173
199
  ###補足情報(言語/FW/ツール等のバージョンなど)
174
200
  Microsoft Visual Studio Community 2017
175
201
  Version 15.0.26228.9 D15RTWSVC

1

追記

2017/04/28 08:28

投稿

cancat
cancat

スコア313

title CHANGED
File without changes
body CHANGED
@@ -135,6 +135,41 @@
135
135
  ```
136
136
  メニューのJavaScript。全文。ひょっとして、これのどこかで設定するのでしょうか?
137
137
 
138
+ まえのJavascriptの質問と併せて考えると、
139
+
140
+ ```Javascript
141
+ function OpenParent(element) {
142
+ if (element != null) {
143
+ if (element.is('li')) {
144
+ element.addClass("active");
145
+ }
146
+ else if (element.is("ul")) {
147
+ element.css("display", "block");
148
+ }
149
+ }
150
+ }
151
+ ```
152
+ が濃厚です。
153
+ これがメニュー全部で走るので、最後の項目がactiveになるのではないか。
154
+ とすると、いま表示したいメニュー(ダッシュボード)を引数で与えて、それとマッチしたとき、と書けばよいのでは。
155
+
156
+ C#ならかんたんで、
157
+
158
+ ダッシュボードをtargetstringに入れるとすると、
159
+ ```
160
+ function OpenParent(element, string targetstring) {
161
+ if (element != null) {
162
+ if (element.is('li') && element.Contains(targetstring)) {
163
+ element.addClass("active");
164
+ }
165
+ else if (element.is("ul")) {
166
+ element.css("display", "block");
167
+ }
168
+ }
169
+ }
170
+ ```
171
+ でよいはずなのですが・・・・。
172
+
138
173
  ###補足情報(言語/FW/ツール等のバージョンなど)
139
174
  Microsoft Visual Studio Community 2017
140
175
  Version 15.0.26228.9 D15RTWSVC