2017-03-16 11 views
0

このファイルのクラスにResultsアクションメソッドを追加しようとしています:SearchController.cs検索結果がクラスを介して表示され、表示されるようにする方法

  • 方法は、検索の種類と検索語を(私はすでにこれをしなかった - フィールド名がIndex.cshtmlで発見された)を指定して、二つのパラメータに取る必要があります。 JobDataクラスを使用して検索結果を検索した後、Index.cshtmlビューに渡す必要があります。 これは、このacitonのデフォルトビューではありませんです。

  • SearchController.csIndexメソッドで行われているように、ListController.columnChoicesもビューに渡す必要があります。

まず私は(JobDataクラスがJobData.csで見つけることができます)正しくJobDataクラスを介して検索結果を探していた場合、私は知りません。 SearchControllerファイルで

は、あなたは、私が試したことがわかります。この:

public IActionResult Results (string searchType, string searchTerm) 
{ 
    //look up search results via JobData class 
    JobData.FindByValue(searchTerm); 

    //pass them into Views/Search/index.cshtml 

    //pass ListConroller.columnChoices to view, as is done in the Index method 
    ViewBag.columns = ListController.columnChoices; 
    ViewBag.title = "Search"; 
    return View(); 
} 

JobData.FindByValueに検索語を渡すには、検索結果をルックアップするために起こっている場合、私は知りません。 searchTermでない場合は、JobData.FindByValueに何を渡す必要がありますか?

第2に、検索結果をIndex.cshtmlビューに渡す方法がわかりません。私は、そのファイルのどこにでもViewメソッドが表示されません - 検索結果の情報がどこに行き、どのような書式設定がパスになるか分かりません。

今、私はこのプロジェクトを実行すると、私は実際にIndex.cshtmlのエラーメッセージになっています:

enter image description here

を、私は、このファイルに触れていないし、それは私にエラーを与えていませんでした前にメッセージ - なぜ今?

また、hereはこのプロジェクトのデモが適切に機能しています。

ありがとうございました!

+0

は、あなたの代わりに「@の.TITLE」の「@title」を配置しようとしましたか? – StfBln

+1

ユーザーが結果をフィルタリングする条件を指定できるカスタム検索アクションを使用する場合は、そのためにODATAを使用する必要があります。 –

+0

@StfBln私はそれを試したが、まだエラーメッセージが表示されています:http://i.imgur.com/U2e9bRM.png – HappyHands31

答えて

1

は私がやろうとしたものです。If-Elseステートメントを作成する必要がありました。ユーザーが「すべて」を選択すると、FindByValueメソッドが使用され、ユーザーが他のものを選択した場合は、2つの引数を受け取るFindByColumnAndValueメソッドを使用します。あなたは文字通りのパスを指定し、ビュー/検索/ index.cshtmlに結果を渡すために

return View("~/Views/SearchController/Index.cshtml"); 
1

"@"の直後にピリオドがあるため、エンジンがあなたのビューを解析できないようです。 ViewBag.title = "Search";を使用して、ビューバックにタイトルを割り当てることもできます。

ビュー誤差を補正するためには、次のように変更することができます。

<h1>@ViewBag.title</h1> 

<h1>@.title</h1> 

そして、あなたはもうこのエラーを持っていないする必要があります。私はViewBag.Jobsオブジェクトに割り当てるために必要な -

public IActionResult Results (string searchType, string searchTerm) 
{ 
    //look up search results via JobData class 
    //if user searches 'all' 
    if (searchType == "all") 
    { 
     ViewBag.Jobs = JobData.FindByValue(searchTerm); 
    } 
    //if user searches by category 
    else 
    { 
     ViewBag.Jobs = JobData.FindByColumnAndValue(searchType, searchTerm); 
    } 
    //pass them into Views/Search/index.cshtml 
    return View("~/Views/SearchController/Index.cshtml"); 
} 

私はJobData.FindByValue(searchTerm)で正しい軌道に乗っていたが、私は何に割り当てるいませんでした。ここで

+0

のトリックが実行されます。これで問題は解決します。あなたは '@ viewBag.title'のやり方をどうやって知りましたか?しかし、私は、JobDataクラスを使って検索結果を正しく検索しているかどうか、あるいは検索結果をビューに渡しているかどうかはわかりません。 – HappyHands31

+0

@ HappyHands31なぜこのようにビューを変更しなければならなかったのかを少し詳しく説明するために返信を編集しました。 – StfBln

関連する問題