.Net Mvc RazorView&实体框架:未找到控制器

时间:2017-08-13 06:42:31

标签: c# asp.net-mvc

我正在使用Razorview和Entity Framework,我正在尝试实现以下目标:我有一个下拉列表(id = ColumnName),其中包含一个列名列表和一个文本框(id = SearchValue),用于从中搜索值表。单击一个按钮,我试图从数据库中检索列名称为“ColumnName”的记录,其中value ='SearchValue'。点击按钮后,我收到 404资源未找到错误。我不确定我哪里出错了。我的代码如下:

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 =标题

2 个答案:

答案 0 :(得分: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,只给Give Country并尝试。编辑代码如下,然后尝试

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

并在剃刀和控制器中以相同的顺序给出参数

答案 1 :(得分: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)

希望这会成功。