POST ではなく GET を介して呼び出されたときに、MVC にカスタム モデル パラメータを入力させるのに問題があるようです。
次のようなアクションを呼び出す JavaScript スニペットがあります。
$.getJSON('<%= Url.Action("DoSearch") %>' + location.search,
function(data) {
if (data.Result == "OK") {
location.href = location.href;
}
});
基本的には、別のアクションを呼び出し、呼び出し元のページと同じクエリ文字列を渡します。結果が「OK」の場合は、現在のページを更新します。
アクションは次のように定義されます。
public ActionResult DoSearch(SearchParameters searchParameters)
モデルは次のとおりです。
public class SearchParameters
{
public string Query;
...
}
URLの呼び出し(firebugで検証済み)はのようなもの/DoSearch?Query=some+query
です。(こちらも試し/DoSearch?searchParameters.Query=some+query
てみましたが失敗)
何を試しても、パラメーターは常に空になります (null ではなく、すべてのパラメーターがデフォルト値に初期化されているだけです)。
代わりに次のようにアクションを定義すると:
public ActionResult DoSearch(string Query, ...)
次に、パラメーターが正しく入力されます。ただし、モデルではありません。
私が想定し:
a) オブジェクト モデルへの入力が GET 要求に対して機能しない。
b) 私は何か間違ったことをしている
何か案は?ありがとう。