質問編集履歴

4

質問削除の取り消し

2017/11/01 23:25

投稿

cancat
cancat

スコア313

test CHANGED
@@ -1 +1 @@
1
- 回答がな。回答がない。
1
+ リンクをクリックしたときに、左のメニューを制御したです
test CHANGED
@@ -1 +1,361 @@
1
- 回答がない回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。
1
+ こんにちは
2
+
3
+ Windows10でASP.NET MVCのアプリケーションを開発しています。
4
+
5
+ Visual Studio 2017 Communityを使っています。
6
+
7
+ ###前提・実現したいこと
8
+
9
+ データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
10
+
11
+ これを修正したいです。
12
+
13
+ ###試したこと
14
+
15
+ (1)データベースから、User一覧を取得し、_Main.cshtmlに展開して、リンクとして表組しました。
16
+
17
+ (2)リンクをクリックすると、dashboardのページを開きます。
18
+
19
+ (3)ところが、左に表示しているメニューが、ダッシュボードではなく、サポートのところになってしまっています。
20
+
21
+ ###発生している問題・エラーメッセージ
22
+
23
+ データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
24
+
25
+ ###該当のソースコード
26
+
27
+ ```C#
28
+
29
+ _LeftMenu.cshtml
30
+
31
+ <ul class="sidebar-menu">
32
+
33
+ @*ダッシュボード*@ @Html.Partial("_LeftMenuContentDashboard")
34
+
35
+ @*ユーザー*@ @Html.Partial("_LeftMenuContentUser")
36
+
37
+ @*サポート*@ @Html.Partial("_LeftMenuContentSupport")
38
+
39
+ @*マニュアル*@ @Html.Partial("_LeftMenuContentManual")
40
+
41
+ </ul>
42
+
43
+ ```
44
+
45
+ ```C#
46
+
47
+ Userの_Main.cshtml
48
+
49
+ @Html.RouteLink(
50
+
51
+ @Html.DisplayFor(modelitem => Model.UsersData[i].UserId), new { Controller = "Dashboard", Action = "Index",
52
+
53
+ userid = @Html.DisplayFor(modelitem => Model.UsersData[i].UserId)
54
+
55
+ })
56
+
57
+ ```
58
+
59
+ これでリンクはできています。クリックでDashboardに遷移します。
60
+
61
+ ```C#
62
+
63
+ _LeftMenuContentDashboard.cshtml
64
+
65
+ @using MyApp.App_GlobalResources
66
+
67
+ <li class="treeview">
68
+
69
+ <a href="/Dashboard/Index">
70
+
71
+ <i class="fa fa-dashboard" style="font-size: 18px"></i>
72
+
73
+ <span style="padding-left: 20px">ダッシュボード</span>
74
+
75
+ </a>
76
+
77
+ </li>
78
+
79
+ ```
80
+
81
+ これが左メニューのダッシュボードのところ。部分ビューです。
82
+
83
+ このダッシュボードをクリックすると、ダッシュボードのところが反転して選択していることがわかります。
84
+
85
+ ```JavaScript
86
+
87
+ $(document).ready(function () {
88
+
89
+ var buttonExport = document.getElementsByClassName("highcharts-button");
90
+
91
+ if (buttonExport.length > 0) {
92
+
93
+ $(buttonExport).click(function () { $('.highcharts-contextmenu > div > div').first().html("@Resource.ExportButtonTitle") });
94
+
95
+ }
96
+
97
+ SetMainMenuFocus();
98
+
99
+ });
100
+
101
+ function myFunction() {
102
+
103
+ document.getElementById("hideTreeView1").style.display = 'none';
104
+
105
+ document.getElementById("hideTreeView2").style.display = 'none';
106
+
107
+ document.getElementById("hideTreeView3").style.display = 'none';
108
+
109
+ }
110
+
111
+ /* Menu */
112
+
113
+ function SetMainMenuFocus() {
114
+
115
+ if (document.location.href == (document.location.protocol + '//' + document.location.hostname + '/')
116
+
117
+ || document.location.href.lastIndexOf("Top") > -1) {
118
+
119
+ OpenParent($("ul.sidebar-menu > li.treeview").first());
120
+
121
+ return;
122
+
123
+ }
124
+
125
+ var currentUrl = document.location.pathname;
126
+
127
+ var link = $("ul.sidebar-menu > li.treeview > ul.treeview-menu > li > aside.left-side > a");
128
+
129
+ var isMatchLink = null;
130
+
131
+ if (link != null) {
132
+
133
+ $.each(link, function () {
134
+
135
+ var href = $(this).attr('href');
136
+
137
+ if (href != null && href != '' && (IsmatchUrl(currentUrl, href) || IsmatchUrl(href, currentUrl))) {
138
+
139
+ isMatchLink = $(this);
140
+
141
+ return true;
142
+
143
+ }
144
+
145
+ });
146
+
147
+ if (isMatchLink == null) {
148
+
149
+ $.each(link, function () {
150
+
151
+ var href = $(this).attr('href');
152
+
153
+ var currentUrl_Index;
154
+
155
+ if (currentUrl.lastIndexOf("/") == currentUrl.length - 1) {
156
+
157
+ currentUrl_Index = currentUrl + "Index";
158
+
159
+ } else {
160
+
161
+ currentUrl_Index = currentUrl + "/Index";
162
+
163
+ }
164
+
165
+ if (href != null && IsmatchUrl(currentUrl_Index, href)) {
166
+
167
+ isMatchLink = $(this);
168
+
169
+ return true;
170
+
171
+ }
172
+
173
+ });
174
+
175
+ }
176
+
177
+ if (isMatchLink != null) {
178
+
179
+ var parent = isMatchLink.closest('ul.treeview-menu');
180
+
181
+ while (parent != null && (parent.is("ul") || parent.is('li'))) {
182
+
183
+ OpenParent(parent);
184
+
185
+ parent = parent.parent();
186
+
187
+ }
188
+
189
+ }
190
+
191
+ $.each(link, function () {
192
+
193
+ $(this).children('div.menu-item').removeClass('menu-item-hover');
194
+
195
+ });
196
+
197
+ isMatchLink.children('div.menu-item').addClass('menu-item-hover');
198
+
199
+ }
200
+
201
+ }
202
+
203
+ function OpenParent(element) {
204
+
205
+ if (element != null) {
206
+
207
+ if (element.is('li')) {
208
+
209
+ element.addClass("active");
210
+
211
+ }
212
+
213
+ else if (element.is("ul")) {
214
+
215
+ element.css("display", "block");
216
+
217
+ }
218
+
219
+ }
220
+
221
+ }
222
+
223
+ function IsmatchUrl(compairWithUrl, toCompairUrl) {
224
+
225
+ if (compairWithUrl.indexOf(toCompairUrl) > -1) {
226
+
227
+ return true;
228
+
229
+ }
230
+
231
+ return false;
232
+
233
+ }
234
+
235
+ ```
236
+
237
+ メニューのJavaScript。全文。ひょっとして、これのどこかで設定するのでしょうか?
238
+
239
+ まえのJavascriptの質問と併せて考えると、
240
+
241
+ ```Javascript
242
+
243
+ function OpenParent(element) {
244
+
245
+ if (element != null) {
246
+
247
+ if (element.is('li')) {
248
+
249
+ element.addClass("active");
250
+
251
+ }
252
+
253
+ else if (element.is("ul")) {
254
+
255
+ element.css("display", "block");
256
+
257
+ }
258
+
259
+ }
260
+
261
+ }
262
+
263
+ ```
264
+
265
+ が濃厚です。
266
+
267
+ これがメニュー全部で走るので、最後の項目がactiveになるのではないか。
268
+
269
+ とすると、いま表示したいメニュー(ダッシュボード)を引数で与えて、それとマッチしたとき、と書けばよいのでは。
270
+
271
+ C#ならかんたんで、
272
+
273
+ ダッシュボードをtargetstringに入れるとすると、
274
+
275
+ ```
276
+
277
+ function OpenParent(element, string targetstring) {
278
+
279
+ if (element != null) {
280
+
281
+ if (element.is('li') && element.Contains(targetstring)) {
282
+
283
+ element.addClass("active");
284
+
285
+ }
286
+
287
+ else if (element.is("ul")) {
288
+
289
+ element.css("display", "block");
290
+
291
+ }
292
+
293
+ }
294
+
295
+ }
296
+
297
+ ```
298
+
299
+ でよいはずなのですが・・・・。
300
+
301
+ 書いてみました。これで、
302
+
303
+ 例外 下記ソースコードの行 75、列 9 で発生しました。http://localhost:0000/Scripts/sidemenu.js
304
+
305
+ 0x8000ffff - JavaScript runtime error: オブジェクトの呼び出しが無効です が発生しました
306
+
307
+ とのことです。
308
+
309
+ keywordには、Dashboardという文字を入れています。
310
+
311
+ ```Javascript
312
+
313
+ function OpenParent(element, keyword) {
314
+
315
+ if (element != null) {
316
+
317
+ try {
318
+
319
+ if (element.is('li') &&
320
+
321
+ -1 < element.context.__proto__.pathname.indexOf(keyword)//<--この行でエラー。
322
+
323
+ ) {
324
+
325
+ element.addClass("active");
326
+
327
+ }
328
+
329
+ else if (element.is("ul")) {
330
+
331
+ element.css("display", "block");
332
+
333
+ }
334
+
335
+ }
336
+
337
+ catch (e) {
338
+
339
+ error = e;
340
+
341
+ }
342
+
343
+ }
344
+
345
+ }
346
+
347
+ ```
348
+
349
+ ###補足情報(言語/FW/ツール等のバージョンなど)
350
+
351
+ Microsoft Visual Studio Community 2017
352
+
353
+ Version 15.0.26228.9 D15RTWSVC
354
+
355
+ Microsoft .NET Framework
356
+
357
+ Version 4.6.01586
358
+
359
+ です。
360
+
361
+ よろしくお願いします。

3

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

2017/11/01 23:25

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- リンクをクリックしたときに、左のメニューを制御したです
1
+ 回答がな。回答がない。
test CHANGED
@@ -1,411 +1 @@
1
- こんにちは
2
-
3
- Windows10でASP.NET MVCのアプリケーションを開発しています。
4
-
5
- Visual Studio 2017 Communityを使っています。
6
-
7
-
8
-
9
- ###前提・実現したいこと
10
-
11
- データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
12
-
13
- これを修正したいです。
14
-
15
-
16
-
17
- ###試したこと
18
-
19
- (1)データベースから、User一覧を取得し、_Main.cshtmlに展開して、リンクとして表組しました。
20
-
21
- (2)リンクをクリックすると、dashboardのページを開きます。
22
-
23
- (3)ところが、左に表示しているメニューが、ダッシュボードではなく、サポートのところになってしまっています。
24
-
25
-
26
-
27
- ###発生している問題・エラーメッセージ
28
-
29
- データベースからリストしたリンクをクリックしたときに、左のメニューが、予期せぬメニューに移動します。
30
-
31
-
32
-
33
- ###該当のソースコード
34
-
35
- ```C#
36
-
37
- _LeftMenu.cshtml
38
-
39
- <ul class="sidebar-menu">
40
-
41
- @*ダッシュボード*@ @Html.Partial("_LeftMenuContentDashboard")
42
-
43
- @*ユーザー*@ @Html.Partial("_LeftMenuContentUser")
44
-
45
- @*サポート*@ @Html.Partial("_LeftMenuContentSupport")
46
-
47
- @*マニュアル*@ @Html.Partial("_LeftMenuContentManual")
48
-
49
- </ul>
50
-
51
- ```
52
-
53
-
54
-
55
- ```C#
56
-
57
- Userの_Main.cshtml
58
-
59
- @Html.RouteLink(
60
-
61
- @Html.DisplayFor(modelitem => Model.UsersData[i].UserId), new { Controller = "Dashboard", Action = "Index",
62
-
63
- userid = @Html.DisplayFor(modelitem => Model.UsersData[i].UserId)
64
-
65
- })
66
-
67
- ```
68
-
69
- これでリンクはできています。クリックでDashboardに遷移します。
70
-
71
-
72
-
73
-
74
-
75
- ```C#
76
-
77
- _LeftMenuContentDashboard.cshtml
78
-
79
- @using MyApp.App_GlobalResources
80
-
81
- <li class="treeview">
82
-
83
- <a href="/Dashboard/Index">
84
-
85
- <i class="fa fa-dashboard" style="font-size: 18px"></i>
86
-
87
- <span style="padding-left: 20px">ダッシュボード</span>
88
-
89
- </a>
90
-
91
- </li>
92
-
93
- ```
94
-
95
- これが左メニューのダッシュボードのところ。部分ビューです。
96
-
97
- このダッシュボードをクリックすると、ダッシュボードのところが反転して選択していることがわかります。
98
-
99
-
100
-
101
- ```JavaScript
102
-
103
- $(document).ready(function () {
104
-
105
- var buttonExport = document.getElementsByClassName("highcharts-button");
106
-
107
- if (buttonExport.length > 0) {
108
-
109
- $(buttonExport).click(function () { $('.highcharts-contextmenu > div > div').first().html("@Resource.ExportButtonTitle") });
110
-
111
- }
112
-
113
- SetMainMenuFocus();
114
-
115
- });
116
-
117
- function myFunction() {
118
-
119
- document.getElementById("hideTreeView1").style.display = 'none';
120
-
121
- document.getElementById("hideTreeView2").style.display = 'none';
122
-
123
- document.getElementById("hideTreeView3").style.display = 'none';
124
-
125
- }
126
-
127
-
128
-
129
- /* Menu */
130
-
131
- function SetMainMenuFocus() {
132
-
133
- if (document.location.href == (document.location.protocol + '//' + document.location.hostname + '/')
134
-
135
- || document.location.href.lastIndexOf("Top") > -1) {
136
-
137
- OpenParent($("ul.sidebar-menu > li.treeview").first());
138
-
139
- return;
140
-
141
- }
142
-
143
- var currentUrl = document.location.pathname;
144
-
145
- var link = $("ul.sidebar-menu > li.treeview > ul.treeview-menu > li > aside.left-side > a");
146
-
147
- var isMatchLink = null;
148
-
149
- if (link != null) {
150
-
151
- $.each(link, function () {
152
-
153
- var href = $(this).attr('href');
154
-
155
- if (href != null && href != '' && (IsmatchUrl(currentUrl, href) || IsmatchUrl(href, currentUrl))) {
156
-
157
- isMatchLink = $(this);
158
-
159
- return true;
160
-
161
- }
162
-
163
- });
164
-
165
-
166
-
167
- if (isMatchLink == null) {
168
-
169
- $.each(link, function () {
170
-
171
- var href = $(this).attr('href');
172
-
173
-
174
-
175
- var currentUrl_Index;
176
-
177
- if (currentUrl.lastIndexOf("/") == currentUrl.length - 1) {
178
-
179
- currentUrl_Index = currentUrl + "Index";
180
-
181
- } else {
182
-
183
- currentUrl_Index = currentUrl + "/Index";
184
-
185
- }
186
-
187
-
188
-
189
- if (href != null && IsmatchUrl(currentUrl_Index, href)) {
190
-
191
- isMatchLink = $(this);
192
-
193
- return true;
194
-
195
- }
196
-
197
- });
198
-
199
- }
200
-
201
-
202
-
203
- if (isMatchLink != null) {
204
-
205
- var parent = isMatchLink.closest('ul.treeview-menu');
206
-
207
-
208
-
209
- while (parent != null && (parent.is("ul") || parent.is('li'))) {
210
-
211
- OpenParent(parent);
212
-
213
- parent = parent.parent();
214
-
215
- }
216
-
217
- }
218
-
219
-
220
-
221
- $.each(link, function () {
222
-
223
- $(this).children('div.menu-item').removeClass('menu-item-hover');
224
-
225
- });
226
-
227
- isMatchLink.children('div.menu-item').addClass('menu-item-hover');
228
-
229
- }
230
-
231
- }
232
-
233
-
234
-
235
- function OpenParent(element) {
236
-
237
- if (element != null) {
238
-
239
- if (element.is('li')) {
240
-
241
- element.addClass("active");
242
-
243
- }
244
-
245
- else if (element.is("ul")) {
246
-
247
- element.css("display", "block");
248
-
249
- }
250
-
251
- }
252
-
253
- }
254
-
255
-
256
-
257
- function IsmatchUrl(compairWithUrl, toCompairUrl) {
258
-
259
- if (compairWithUrl.indexOf(toCompairUrl) > -1) {
260
-
261
- return true;
262
-
263
- }
264
-
265
- return false;
266
-
267
- }
268
-
269
- ```
270
-
271
- メニューのJavaScript。全文。ひょっとして、これのどこかで設定するのでしょうか?
272
-
273
-
274
-
275
- まえのJavascriptの質問と併せて考えると、
276
-
277
-
278
-
279
- ```Javascript
280
-
281
- function OpenParent(element) {
282
-
283
- if (element != null) {
284
-
285
- if (element.is('li')) {
286
-
287
- element.addClass("active");
288
-
289
- }
290
-
291
- else if (element.is("ul")) {
292
-
293
- element.css("display", "block");
294
-
295
- }
296
-
297
- }
298
-
299
- }
300
-
301
- ```
302
-
303
- が濃厚です。
304
-
305
- これがメニュー全部で走るので、最後の項目がactiveになるのではないか。
306
-
307
- とすると、いま表示したいメニュー(ダッシュボード)を引数で与えて、それとマッチしたとき、と書けばよいのでは。
308
-
309
-
310
-
311
- C#ならかんたんで、
312
-
313
-
314
-
315
- ダッシュボードをtargetstringに入れるとすると、
316
-
317
- ```
318
-
319
- function OpenParent(element, string targetstring) {
320
-
321
- if (element != null) {
322
-
323
- if (element.is('li') && element.Contains(targetstring)) {
324
-
325
- element.addClass("active");
326
-
327
- }
328
-
329
- else if (element.is("ul")) {
330
-
331
- element.css("display", "block");
332
-
333
- }
334
-
335
- }
336
-
337
- }
338
-
339
- ```
340
-
341
- でよいはずなのですが・・・・。
342
-
343
-
344
-
345
- 書いてみました。これで、
346
-
347
- 例外 下記ソースコードの行 75、列 9 で発生しました。http://localhost:0000/Scripts/sidemenu.js
348
-
349
- 0x8000ffff - JavaScript runtime error: オブジェクトの呼び出しが無効です が発生しました
350
-
351
- とのことです。
352
-
353
- keywordには、Dashboardという文字を入れています。
354
-
355
-
356
-
357
- ```Javascript
358
-
359
- function OpenParent(element, keyword) {
360
-
361
- if (element != null) {
362
-
363
- try {
364
-
365
- if (element.is('li') &&
366
-
367
- -1 < element.context.__proto__.pathname.indexOf(keyword)//<--この行でエラー。
368
-
369
- ) {
370
-
371
- element.addClass("active");
372
-
373
- }
374
-
375
- else if (element.is("ul")) {
376
-
377
- element.css("display", "block");
378
-
379
- }
380
-
381
- }
382
-
383
- catch (e) {
384
-
385
- error = e;
386
-
387
- }
388
-
389
- }
390
-
391
- }
392
-
393
- ```
394
-
395
-
396
-
397
- ###補足情報(言語/FW/ツール等のバージョンなど)
398
-
399
- Microsoft Visual Studio Community 2017
400
-
401
- Version 15.0.26228.9 D15RTWSVC
402
-
403
- Microsoft .NET Framework
404
-
405
- Version 4.6.01586
406
-
407
-
408
-
409
- です。
410
-
411
- よろしくお願いします。
1
+ 回答がない回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。回答がない。

2

あddd

2017/10/30 13:38

投稿

cancat
cancat

スコア313

test CHANGED
File without changes
test CHANGED
@@ -342,6 +342,58 @@
342
342
 
343
343
 
344
344
 
345
+ 書いてみました。これで、
346
+
347
+ 例外 下記ソースコードの行 75、列 9 で発生しました。http://localhost:0000/Scripts/sidemenu.js
348
+
349
+ 0x8000ffff - JavaScript runtime error: オブジェクトの呼び出しが無効です が発生しました
350
+
351
+ とのことです。
352
+
353
+ keywordには、Dashboardという文字を入れています。
354
+
355
+
356
+
357
+ ```Javascript
358
+
359
+ function OpenParent(element, keyword) {
360
+
361
+ if (element != null) {
362
+
363
+ try {
364
+
365
+ if (element.is('li') &&
366
+
367
+ -1 < element.context.__proto__.pathname.indexOf(keyword)//<--この行でエラー。
368
+
369
+ ) {
370
+
371
+ element.addClass("active");
372
+
373
+ }
374
+
375
+ else if (element.is("ul")) {
376
+
377
+ element.css("display", "block");
378
+
379
+ }
380
+
381
+ }
382
+
383
+ catch (e) {
384
+
385
+ error = e;
386
+
387
+ }
388
+
389
+ }
390
+
391
+ }
392
+
393
+ ```
394
+
395
+
396
+
345
397
  ###補足情報(言語/FW/ツール等のバージョンなど)
346
398
 
347
399
  Microsoft Visual Studio Community 2017

1

追記

2017/04/28 08:28

投稿

cancat
cancat

スコア313

test CHANGED
File without changes
test CHANGED
@@ -272,6 +272,76 @@
272
272
 
273
273
 
274
274
 
275
+ まえのJavascriptの質問と併せて考えると、
276
+
277
+
278
+
279
+ ```Javascript
280
+
281
+ function OpenParent(element) {
282
+
283
+ if (element != null) {
284
+
285
+ if (element.is('li')) {
286
+
287
+ element.addClass("active");
288
+
289
+ }
290
+
291
+ else if (element.is("ul")) {
292
+
293
+ element.css("display", "block");
294
+
295
+ }
296
+
297
+ }
298
+
299
+ }
300
+
301
+ ```
302
+
303
+ が濃厚です。
304
+
305
+ これがメニュー全部で走るので、最後の項目がactiveになるのではないか。
306
+
307
+ とすると、いま表示したいメニュー(ダッシュボード)を引数で与えて、それとマッチしたとき、と書けばよいのでは。
308
+
309
+
310
+
311
+ C#ならかんたんで、
312
+
313
+
314
+
315
+ ダッシュボードをtargetstringに入れるとすると、
316
+
317
+ ```
318
+
319
+ function OpenParent(element, string targetstring) {
320
+
321
+ if (element != null) {
322
+
323
+ if (element.is('li') && element.Contains(targetstring)) {
324
+
325
+ element.addClass("active");
326
+
327
+ }
328
+
329
+ else if (element.is("ul")) {
330
+
331
+ element.css("display", "block");
332
+
333
+ }
334
+
335
+ }
336
+
337
+ }
338
+
339
+ ```
340
+
341
+ でよいはずなのですが・・・・。
342
+
343
+
344
+
275
345
  ###補足情報(言語/FW/ツール等のバージョンなど)
276
346
 
277
347
  Microsoft Visual Studio Community 2017