質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

Q&A

解決済

1回答

4114閲覧

asp.net mvc5でモバイル対応ができない?

Dra

総合スコア75

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

0グッド

0クリップ

投稿2016/06/09 04:29

お世話になります。
かなり急ぎになります。

visual studio 2015 community で asp.net mvc5(今はcoreに名前が変わりましたね)でwebsiteを作成しております。
現在、山田先生の紫本を元に開発をしていますが、本にかいてある通りにやっても、モバイル対応ができません。

具体的に、既存のビューと同じフォルダに、
例えば、
about.cshtml
があるとすると、
about.Mobile.cshtmlという名前のファイルを作成しましたが、常にPC側にビューが返されてしまいます。
chromeのエミュレーターを使っており、PCとして認識されていました、というオチではありません。

また、同様の方法でasp.net mvc 4ではモバイル対応ができていましたので、方法が間違って居るというわけではないようです。
MVC5に関して、何か特別なことがあるのでしょうか。
一応既存のものに対して修正・開発をしていますので、何か初期設定から乖離している可能性もあります。
どなたか、お力添えをお願いします!

一応、virtual boxでwindows10を起動しての仮想環境での作成になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ASP.NET MVC5で間違いないでしょうか。
ASP.NET CoreになったのはASP.NET5でASP.NET MVC6にあたるバージョンだったと記憶しています。

確認してみようかなと思うのですがバージョンを教えていただけますか。
イメージ説明

例えば新規のプロジェクト作成するときは、ASP.NET4.6.1のテンプレートから作成しましたか?
それともASP.NET5のテンプレ―トから作成しましたか?

投稿2016/06/11 00:47

編集2016/06/11 01:31
shika358

総合スコア122

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shika358

2016/06/11 01:35

こちらでMVC5上記の画像でいう上にあるテンプレートで試したところ問題なく動作の確認ができました。 状況がわかりませんが http://blog.shibayan.jp/entry/20130530/1369903290 にあるように、ほかにDisplayModeを利用している場合は利用できないようです System.Web.WebPagesの名前空間を使い HttpContext.SetOverriddenBrowser(BrowserOverride.Mobile); で、モバイルと認識されるCookieを作成することができるので、それでもMobileとして認識されないか確認されるのはいかがでしょうか
shika358

2016/06/11 01:38

また、Google ChromeのNetworkCondition欄のUserAgentの切り替えでもMobileへの切り替えが確認できました
Dra

2016/06/13 01:16

遅くなって申し訳ございません。 回答ありがとうございます。 すいません、ごっちゃになってしまいました。 ASP.NET5 MVC6(core)での実装になります。 ASP.net5のテンプレートから作成しました。 ASP.NET4.6.1であれば、問題なくいけますね。 ASP.NET5になってこちらの機能が削除されたのでしょうか。。。 現状、コントローラー側でビューを返す機能のところで切り分けの共通関数を作って対応していますが、しなければしないに越したことはないので。。。 もしご存知でしたらご教示ください! 取り急ぎ、ベストアンサーにさせていただきました。 ASP.NETについての情報が日本では少なく、難儀していました。(StackOverFlowでもASP.NET 5の情報は少ないです) 重ね重ね親切な回答本当にありがとうございます!!m(--;;)m
shika358

2016/06/13 02:41

ベストアンサーありがとうございます .Net Coreについては正直、また早いかなと考えていてキャッチアップしておりませんでしたので、有力な情報をお伝えする事はできないかもわかりませんが・・・ https://docs.asp.net/en/latest/mvc/views/mobile.html https://github.com/aspnet/Docs/issues/97 ここら辺の内容が、仰っている内容かなと思います ※英語があまり得意ではないので違っていたらごめんなさい・・・ もし、上記のURLの内容であればRC2で実装される予定なのではと思います。 個人で実装する場合でも、filterで実装すると幾分すっきりしそうですね。
shika358

2016/06/13 02:47

Milestoneは、1.0ですね。 なのでRC2には入ってないっぽいですね
Dra

2016/06/14 02:23

なるほど!!ご丁寧にありがとうございます! >.Net Coreについては正直、また早いかな 自分でも正直、手を出すのは早すぎだと思いました。情報ほぼ0です。面白いからいいんですが。。。 1.0ということは、RC2後の正式リリースで対応という解釈でよろしいでしょうか? >個人で実装する場合でも、filterで実装すると幾分すっきりしそうですね。 すいません、この点についてもご質問させていただければと思います!(てへぺろ) 今は各コントローラーの親コントローラーに関数を実装し、対応しています。 つまり、 子コントローラーのActionResultのビューを返すタイミングで、Return モバイル対応関数(ViewModel) という感じです(すいません、わかりづらくて) フィルターを使わなかったのも、ビューを返すだけであれば、コントローラーのアクション実行後のタイミング(Excecuted)で、Redirect MobileView()とすればできるのはわかっていたのですが、それだけではModelやViewModelを引数に取れないと判断したためです。 フィルターの実行後のタイミングでも、実行中の各コントローラーの名前や、引数にしたModelなどを取得することは可能なのでしょうか?
shika358

2016/06/14 03:57

1.0は、リリース版(2016/6/27)だと思います 考えるといよいよですね(笑) filterならリダイレクトじゃなくて、filterContext.Resultに適切なViewResultを設定してあげれば大丈夫かなと思います。 Modelの情報やなんかも、filterContext.Resultの中に入ってるはずですよ。 ※filterContextはActionExecutingContext、ResultExecutingContextとかそこらへんです 言われてみるとコントローラーでもよいかもしれないですね public abstract class OriginalController : Controller { public new ActionResult View() { if (isMobile) //モバイル判断などは割愛 return base.View($"{actionName}.Mobile"); return base.View(); } } こんな感じですかね、必要なActionResult分作成しておけば 本家で対応したときもスムーズに移行できそうですね ※全体的にMVC5の知識なので、若干違ってるかもしれないです
Dra

2016/06/14 05:11

ありがとうございます!! これは非常に嬉しい情報です! 6/27に来るのも嬉しいやら悲しいやらw >return base.View($"{actionName}.Mobile"); ここが私が作った関数には足りなかったです!(泣 私の場合は、 return base.View($"{actionName}Mobile"); (ドットを抜いています) と.をつけてなかったです。こうしないとcshtmlとして解釈できないと思い込んでいましたが、浅はかでした。 また、View関数のオーバーライドすればいいことも気付かなかったです。(新しく関数作っていました。。。) shakaさんの方が移行がスムーズで、他の人に恨まれずに済みそうです。 早速試してみます! 今回の質問では長々と質問してしまい、申し訳ございませんでした。 五里霧中で戦っていましたが、助けていただいたおかげで少し光が見えてきた感じです。 また、設計手法に関しても成長できました。 本当にありがとうございました! m(--*)m
shika358

2016/06/14 05:45

ヒントになったようでよかったです。 私自身もまだASP.NET MVCを触って1年ちょっと位で、質問を見て考えてみて勉強させてもらっていますので、また何かあれば質問してみてください 気まぐれですが、たまに見ては回答していますので(笑)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問