2017-08-13 16 views
0

私はRazorviewとEntity Frameworkを使用していますが、以下を達成しようとしています:カラム名とテキストボックスのリストを持つドロップダウン(id = ColumnName) id = SearchValue)テーブルから値を検索します。ボタンをクリックすると、列名が「ColumnName」で、値が「SearchValue」であるレコードがデータベースから取得しようとしています。私は404リソースが見つかりませんボタンのクリックでエラーが見つかりません。私はどこに間違っているのか分からない。次のように私のコードは次のとおりです。.Net Mvc RazorView&Entity Framework:コントローラが見つかりません

HTML:

<select id='mySelector' name="ColumnName"> 
    <option value="">Please Select</option> 
    <option value='Country'>Country</option> 
    <option value='Title'>Title</option> 
    <option value='State'>State</option> 
</select> 
<input type="text" id="cs" name="SearchValue"> 
<input type="button" value="Search" onclick="location.href='@Url.Action("FilterByColumn", "CountryController")?SearchValue=' + document.getElementById('cs').value + '&ColumnName=' +document.getElementById('mySelector').value" /> 
<table id='myTable'> 
// values 
</table> 

CountryController:

public ActionResult FilterByColumn(String ColumnName, String SearchValue) 
{ 

    if (!String.IsNullOrEmpty(SearchValue)) 
    { 
     List<Country> result = new List<Country>(); 
     result = db.Countries.ToList(); 
     result = db.Countries.Where(ColumnName + ".Contains" + "(\"" + SearchValue.ToLower() + "\")").ToList(); 
     return View(result); 
    } 
    return RedirectToAction("Index"); 
} 

注:私はこのコントローラで作成、編集などの他の方法を持っています。 はまた、404エラーがスローレンダリングされたURLは次のとおりです。 /CountryController/FilterByColumn SearchValue =サンプル=タイトル& ColumnNameに

+0

の両方で同じ順序でパラメータを与えます( "FilterByColumn"、 "Country") ' –

+0

私のコントローラはCountryController.csと呼ばれ、レンダリングされたURLは正しいようです:/ CountryController/FilterByColumn – user7221204

+0

いいえ、それはありません!!あなたのURLは '/ Country/FilterByColumn'でなければなりません(前のコメントを読んでください) –

答えて

1

あなたのコード。次のようにあなたのコードを編集して、

<input type="button" value="Search" onclick="location.href='@Url.Action("FilterByColumn", "Country")?SearchValue=' + document.getElementById('cs').value + '&ColumnName=' +document.getElementById('mySelector').value" /> 

を試してみて、あなたは(私は疑う) `CountryControllerController`という名前のコントローラ、その`@Url.Actionを持っていない限り、カミソリやコントローラ

0

あなたのボタンのコード

input type="button" value="Search" onclick="location.href='@Url.Action("FilterByColumn", "CountryController")?SearchValue=' + document.getElementById('cs').value + '&ColumnName=' +document.getElementById('mySelector').value" /> 

が、コントローラには、あなたが以下のように書かれているが、次のように?

public ActionResult FilterByColumn(String ColumnName, String SearchValue) 

ただし、パラメータの順序は異なります。コントローラを次のように変更してください。

public ActionResult FilterByColumn(String SearchValue,String ColumnName) 

これがうまくいくと思います。

<input type="button" value="Search" onclick="location.href='@Url.Action("FilterByColumn", "CountryController")?SearchValue=' + document.getElementById('cs').value + '&ColumnName=' +document.getElementById('mySelector').value" /> 

だけで国を与えるとしてみてください、CountryControllerを与えることはありませんflollowsとして

+0

パラメータの順序は違いはありません –

関連する問題