DLLから子アプリケーションを動的にロードするMVC 5アプリケーションを構築しました。すべてが期待どおりに機能しますが、途中でモデルがPostを使用しているにもかかわらずクエリ文字列に表示されているように見え始めました。MVCでクエリ文字列に表示されるモデルの問題
彼らはこのように表示されている:残念ながら
THI:私は彼らがこのように表示されるように期待される一方で
http://localhost:64921/Access/LookupUser?PageModel=AccessChecker.App.Models.UserLookup
しばらくの間別のプロジェクトのために横に置かなければならず、私はちょうどそれに戻っています。私はそれを置く前に知っている、私は問題のタックをしようとするアプリケーションの良い部分を再構築しようとし、それの原因を渡って来なかった。
私のルートが動的に生成されるので、私はコードのスニペットを表示することはできませんが、ここではルートURLの値が(実行時に順番に)です:
"__browserLink/requestData/{requestId}"
""
"API/{コントローラ}/{ID}"
"{リソース} .axd/{*}パス情報"
"{コントローラ}/{アクション}/{ID}"
"CAS/{コントローラ}/{アクション}/{ID}"
「App1の/ {コントローラ}/{アクション}/{ID } "
"App2の/ {コントローラ}/{アクション}/{ID}"
"App3起動/ {コントローラ}/{アクション}/{ID}"
" アクセス/ {コントローラ}/{action}/{id} "
私のコントローラのアクションは、次のようになります。ビューで
public ActionResult LookupUser(UserLookup LookupModel, FormCollection FormData)
{
UserLookup UL = null;
...
return View(UL);
}
フォームは次のようになります。他の多数の試みの上に
@using (Html.BeginForm("LookupUser", Application.ApplicationPrefix, new { PageModel = Model }, FormMethod.Post, new { id = "LookupArea", @class = (Model.Memberships.Count > 0 ? "LoadedWithContent" : ""), role = "form" }))
{
...
<input type="submit" id="Submit_btn" value="Lookup" />
...
}
、私は、デフォルトルートを取り出す試してみました、{」移動コントローラの}/{アクション}/{ID} "最後に、無関係のルートを取り出し、" FormCollection FormData "を削除し、忘れてしまったことがたくさんある。 Global.asax.csのApplication_BeginRequestに渡されるURLには、そのモデルがあります。
また、動的コンテンツをDLL、セキュリティチェック、エラーリダイレクトから有効にするために、MVCフレームワークの重要な部分を書き直したり、拡張したりしているため、その一部で行う必要があります。パラメータまたはルートの順番(それをチェックしようとしたとしても)です。
これを引き起こす可能性のあるものについて、見える範囲や見通しの範囲をどこで絞り込むべきかについてのガイダンスは高く評価されます。
これらがGetアクションである場合、getはPostやPutアクションのようなパラメータを持つボディの送信をサポートしていないため、これがデフォルトの動作です。 –
インテントは、データを受け取るときにポストになります(FormCollectionは代替の呼び出しメソッドのためにそこにあります)。 HttpPost属性を設定すると、2つの異なるアクションが必要になります(1つは空白のフォームに対してGet、もう1つはポスト)。 – Paul77M
私はコードを2つのアクションに分割して、同じ問題を投稿しました。 – Paul77M