2017-08-13 46 views
0

我正在使用Razorview和實體框架,我試圖實現以下目標:我有一個下拉列表(id = ColumnName),它有一個列名稱和一個文本框id = SearchValue)以從表中搜索值。點擊一個按鈕,我試圖從數據庫中檢索列名是'ColumnName'的記錄,並且value ='SearchValue'。我得到一個404資源未找到錯誤點擊按鈕。我不知道我哪裏出錯了。我的代碼如下:.Net Mvc RazorView&實體框架:找不到控制器

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錯誤呈現的網址是: /CountryController/FilterByColumn SearchValue =樣品&的ColumnName =標題

+0

除非你有一個名爲'CountryControllerController'(我懷疑)控制器,其'@Url.Action (「FilterByColumn」,「國家」)' –

+0

我的控制器被稱爲CountryController.cs和URL呈現似乎是正確的:/ CountryController/FilterByColumn – user7221204

+0

沒有它的不!你的網址需要是'/ Country/FilterByColumn'(閱讀之前的評論) –

回答

1

你的代碼flollows

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

永不放棄CountryController,只要給國家和嘗試。編輯代碼如下,並嘗試

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

,並給予在同一順序參數都剃鬚刀和控制器

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) 

希望這會奏效。

+0

參數的順序沒有區別 –