ASP.NET MVC (659レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
419
(6): 2015/10/05(月)19:25 ID:??? AAS
ヴュースクリプトで使う型付きヘルパーメソッドActionLinkについて質問させてください。
引数は、一つ目(リンクテキスト)、二つ目(アクションメソッド)、三つ目(パラメーター)です。

この三つ目のパラメーターの指定では、匿名オブジェクトでプロパティーを設置して行います。
このプロパティー名は、ルートデフォルト設定の、/{contoller}/{action}/{param}で指定するパターンに書かれている名称(param)と同じである必要があるんでしょうか。
421: 2015/10/05(月)20:03 ID:??? AAS
>>420
的確なお答えありがとうございます。
(やはりつながっていたわけか。)

MVCフレームワークはいろいろ裏でつながっているので、
便利なのだろうが、察知力が必要だなと思いました。

今察知して、そうなのかなと思ったことは、
そのコントール/アクションへ制御を飛ばしてくれた「ルーティング情報」の、
/{contoller}/{action}/{param} URIパターンで使用されている名称が、
アクションメソッドから起動されたヴュースクリプト上のヘルパーメソッドに絡んでくるのかなということです。
(これは、正しいでしょうか?)

上の例(>>419)では、デフォルトルーティング設定が使用されたので、
デフォルトルートのURIパターンで指定された名称が使われたのかなと思いました。

すみません、ありがとうございます。
425
(1): 419 2015/10/07(水)13:00 ID:??? AAS
>>422
>>424
レスありがとうございます。

>>422>実際にレンダラーに渡されるURIはこう
>>424>事実>>422のようにアクセスしても全く同じ動作をする

ちょっと見えてきました。
MVCは、URIルーティング対応でも、内部的にはクエリストリングでパラメーターを処理しているという理解をしたんですが、良いでしょうか。

>>419で、ヘルパーメソッドActionLinkの第3引数に渡した匿名オブジェクト(プロパティを構成したもの)についてですが、
そのプロパティー名が、さきのクエリストリングのKey(?Key=parameter)に当たるのだと思ってすっきりとしました。
それだと、匿名オブジェクトに構成するプロパティー名は、クエリストリングのKeyに一致させる必要があるとわかります。
URI形式で、無骨に、/A/B/文字列 でアクセスするクライアントサイドの側からは、クエリストリングのKeyの存在は見えないため、混乱していました。

>>424>こんなように○○に見えるけど実際はXXに変換してるだけ、てのが多い

パラメーターのクエリストリングへの変換以外に、何があるのか気になります。
426: 419 2015/10/07(水)13:06 ID:??? AAS
>>425
> 匿名オブジェクトに構成するプロパティー名は、クエリストリングのKeyに一致させる必要があるとわかります。

読み返していたら、やっぱり、わからなくなりました。

URIで指定されたパラメーターが内部的に、クエリストリングで処理されていることはわかりました。
しかし、ヘルパーメソッドActionLinkで作成されるのは、URI(/A/B/パラメーター)です。
ここにはクエリストリングのKeyは登場せずに、パラメーターだけがあります。
すると、あくまでURIを作成するActionLinkの第3引数に渡すパラメーター刻印用の匿名オブジェクトで、
そのプロパティ名とパラメーター名を一致させる必要性がわかりません。
428: 419 2015/10/10(土)01:29 ID:??? AAS
>>427
すみませんレスが遅くなってしまいました。
ありがとうございます。

>ルーティングパターンが複雑化してくると意図しない物にマッチング
>一旦ハマると原因特定が困難

ActionLinkメソッドはヘルパーすぎて、動作が見えなくなるところが怖いですね。
何をしているのか仕組みが見えていないと、初心者には反ってふさわしくないのかもしれないですね。

この例では、URIのルーティングテーブルの内容によって、予期しなかった(夢にも思わなかった)リンクが生成されることで、
バグに悩まされるという問題ですね。

>Action引数に独自モデルクラスを指定できるがメンバをベタに書いても同じ動作

まだ理解が追いついていなくて、アクションメソッド内で、Viewメソッドを用いることで、ヴュースクリプトを起動してそこに、モデルオブジェクトを渡せるくらいしか知りません。
アクションメソッド自体に、モデルを渡すとどうなるんだろう???
430: 419 2015/10/16(金)06:12 ID:??? AAS
>>429
レスありがとうございます。すみません。

>ViewからクラスをActionにPOSTすることはできない
>メンバを一つ一つ指定してやる必要がある

今は、紫の本で勉強中です。ちょっとわかりません。

ビュースクリプトにモデルクラス(Object型)を渡して、ビュースクリプトないで@foreachで回して、
構造を作成できるところまで知っていますが、
逆に、コントロール側にモデルを渡す段階にまで勉強が追いついてません。
しかし、考えてみれば、ポストバックによってクライアントからデータ投げられたデータを、
受ける必要があるわけで、その仕組みのことかなと予測してみました。その場合には、メンバを一つずつ指定する必要があるということなのかな。

勉強つづけます。
一つずつ抑えていますが、行間を読んでいって初めて理解するので、時間がかかります。
とくに、MVCはモデルやURIルーティングパターンを中心にして、クエリパラメーターをアクションメソッドの同名の引数に渡すなど、自動でやってくれるので、
理解が大変です。
これまでは、メソッドの引数定義の変数名なんてメソッド外部からは気にしたことありませんでしたが、MVCはそこまでC#を活用しています。
こういうことかな?こういうことだろうか?と行間を読むのは、でも楽しいかもしれません。

また何かあればよろしくお願いいたします。
432
(1): 419 2015/10/17(土)00:29 ID:??? AAS
>>431
なるほど。素のポストバックなんて意識しませんでしたね。
ずっと、WEBフォーム使っていたので、すべてコントロールを参照するだけでいけましたから。

そういえば、一度、HTMLの参考書でも読んでみようかな。
しかし、HTML 2についての本が本屋でよく見られます。
MVCで作成されるHTMLって、バージョン2なのかな。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.030s