1

私のページには、いくつかのラジオボタンがある検索ボックスがあります。選択されているラジオボタンに応じて、表示されているビューによって異なります。

ただし、ビューを返す方法がわかりません。

私のコードは

 public ActionResult Index(string jobType)
    {
        if (jobType.ToLower() == "this")
            CandidateResults();
        else
            JobResults();
    }

    private ActionResult CandidateResults()
    {
        var model = //logic
        return View(model);
    }
    private ActionResult JobResults()
    {
        var model = //logic
        return View(model);
    }

しかし、これは画面に何も表示しません(白いページ)。これは理にかなっていますが、インデックスを返したくありません。新しいページ(JobResultsまたはCandidatesと呼ばれます)を返し、これらの新しいページの両方のビューを作成しますが、メソッドを右クリックすると(JobResults()またはCandidates())ビューを追加するオプションがありません。

この段階で私は迷子になっています。誰かアドバイスをいただけますか。

4

5 に答える 5

3

インデックスからビューを返すか、CandidateResultsまたはJobResultsアクションにリダイレクトします。

public ActionResult Index(string jobType)
{
    if (jobType.ToLower() == "this")
        return CandidateResults();
    else
        return JobResults();
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View(model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View(model);
}
于 2013-02-15T14:31:19.927 に答える
2

これを試して

public ActionResult Index(string jobType)
{
    return (jobType.ToLower() == "this") ?
        RedirectToAction("CandidateResults") :
        RedirectToAction("JobResults");
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View(model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View(model);
}
于 2013-02-15T14:34:13.867 に答える
1

プライベートメソッドでは、表示する実際のビューを指定する必要があります。

public ActionResult Index(string jobType)
{
    if (jobType.ToLower() == "this")
        CandidateResults();
    else
        JobResults();
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View("CandidateResults", model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View("JobResults", model);
}

これは、ビューエンジンの動作方法が原因で発生します。現在のリクエストのアクション名は、常にIndexインデックス関数が呼び出されたときです。別のメソッドを呼び出した場合でも、ビューエンジンは現在実行中の関数の名前ではなく、現在のアクションの名前を使用します。

于 2013-02-15T14:35:01.543 に答える
0

ユーザーを適切なコントローラーメソッドにリダイレクトする必要があるだけで、そのメソッドは次のように戻りViewます。

public ActionResult Index(string jobType)
    {
        if (jobType.ToLower() == "this")
            return RedirectToAction("CandidateResults","ControllerName");
        else
            return RedirectToAction("JobResults","ControllerName");
    }
于 2013-02-15T14:34:45.317 に答える
0
public ActionResult Index(string jobType)
{
    if (jobType.ToLower() == "this")
        return RedirectToAction("CandidateResults");

    return RedirectToAction("JobResults");
}

private ActionResult CandidateResults()
{
    var model = //logic
    return View(model);
}
private ActionResult JobResults()
{
    var model = //logic
    return View(model);
}
于 2013-02-15T14:42:10.377 に答える