0

私はこれをやろうとしています:

public ActionResult Index(List<Client> Client)
{
    if (Client != null)
        return View(Client);

    return View(db.Client.ToList());
}

[HttpPost]
public ActionResult Search(string cnpj)
{
    List<Client> Client = db.Client // here it finds one client
        .Where(c => cnpj.Equals(c.Cnpj))
        .ToList();

    return RedirectToAction("Index", Client);
}

アクション検索の後、インデックスに移動しますが、クライアントパラメータは常にnullです。

誰かが理由を知っていますか?


私はそれを行い、機能します:

public ActionResult Index(string cnpj)
{
    if (!string.IsNullOrEmpty(cnpj))
    {
        List<Client> clients = db.Client
        .Where(c => cnpj.Equals(c.Cnpj))
        .ToList();

        return View(clients);
    }

    return View(db.Client.ToList());
}
4

2 に答える 2

0

yリダイレクトする代わりに、単に関数を呼び出すことはできませんか?Searchアクションからこれを呼び出す

Index(Client)

リダイレクトで何が起こるかというと、302のHTTPコードがリダイレクトURLとともにブラウザに送信され、次にブラウザがサーバーに新しいリクエストを送信します。これは、ブラウザがそれを送り返すことができないためですClientnull編集:-
この場合のコメントを読んだ後、2つのオプションがあります1. 1つ
は別のIndexアクションを実行し、パラメータタイプを文字列に変更して、直接呼び出すことができるようにすることです
2.を使用しますTempData()。これはMVCが提供する特別なストアであり、オブジェクトをしばらくの間格納でき、初めてアクセスしたときにその値を失います。
クライアントリストを一時データに追加し、TempData.Add("Client",Client)それをアクションインデックスとして使用するだけです。TempData["Client"]

于 2012-04-19T16:55:56.277 に答える
0

こんにちは、次の質問で示されているように、カスタム型を渡すカスタム ModelBinder を作成する必要があります: ASP.NET MVC controller actions with custom parameter conversion?

次に、彼は非常に優れたブログ投稿を勧めています: カスタム パラメーター変換を使用した ASP.NET MVC コントローラー アクション?

お役に立てれば

于 2012-04-19T17:22:24.563 に答える