我想在我的网站上过滤产品。但是当我点击我的过滤器按钮时,我收到了无法找到资源的错误消息。
描述:HTTP 404.资源或其任何依赖项可能已被删除,重命名或暂时不可用。检查下面的网址,确保拼写正确。 请求的URL:/Views/Product/Index.cshtml
这是我的过滤器(简化):
<form action="~/Views/Product/Index.cshtml" method="get">
<div class="row">
<div class="row">
<select class="event-type-select" name="category">
<optgroup label="optgroup1">
<option> option1</option>
<option> option2</option>
</optgroup>
<optgroup label="optgroup2">
<option> option3</option>
</optgroup>
</select>
</div>
<div class="row">
<button type="submit" id="button" class="btn btn-default">filter!!!</button>
</div>
</div>
</form>
我没有向控制器添加任何代码。我不知道这是不是问题,但我也不知道我必须在控制器中添加什么。
希望有人能帮助我解决这个问题。
初学者。
答案 0 :(得分:0)
这是链接到视图:
"~/Views/Product/Index.cshtml"
您不想链接到某个页面,而是希望链接到控制器上的操作。例如,如果您有控制器操作,例如:
public class ProductsController : Controller
{
public ActionResult Create(Product product)
{
// code to create a "product"
}
}
然后,至少使用默认路由约定(除非您修改它们),URL将类似于:
"/Products/Create"
(注意:在上面的代码中,我使用的是“Products”而不是“Product”。它可能是一个轻微的挑剔,但从语义上来说,它通常更适合复数集合。而这些动作的RESTful URL是关于什么的在语义上是一个集合。)
在MVC中,您不会创建彼此交互的“页面”。您正在创建“控制器”,这些“控制器”由请求调用,使用“模型”执行逻辑,并直接控制到“视图”以将结果呈现给用户。
ASP.NET MVC Framework提供了各种工具来帮助简化其中的大部分工作,例如提供“HTML Helpers”,它将根据路由规则和指定的控制器/操作为您确定URL。你一定要好好学习ASP.NET MVC上的一些教程,并继续对如何使用框架有更多的了解。
答案 1 :(得分:-1)
问题是服务器无法找到所请求的内容。
您需要将其添加到控制器:
public class ProductController : Controller
{
public ActionResult Index()
{
return View();
}
}
下的产品文件夹中
如果要将参数传递给页面以应用过滤器:
public class ProductController : Controller
{
public ActionResult Index()
{
// Populate products or from a database
List<Product> products = new List<Product>();
Product prod = new Product();
prod.Name = "My Product";
products.Add(prod);
return View(products);
}
}
模型在Models:
文件夹下看起来像这样public class Product
{
public string Name { get; set; }
}
然后Index.cshtml会有这样的模型:
@model List<Product>
@foreach (var product in Model)
{
<p> @product.Name </p>
}
仅作为示例,如果您只想从下拉菜单中显示所选产品,则此表格是您要创建的表单:
@model List<Product>
@using (@Html.BeginForm("FilterProduct", "Product", new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<select id="filter" name="filter" multiple>
<option value="">Products</option>
@foreach (var product in Model)
{
<option value="@product.Name">@product.Name</option>
}
</select>
<button type="submit" id="button" class="btn btn-default">filter!!!
</button>
}
所以现在你的控制器看起来像这样:
public class ProductController : Controller
{
public ActionResult Index()
{
// Populate products or from a database
List<Product> products = new List<Product>();
Product prod = new Product();
prod.Name = "My Product";
products.Add(prod);
return View(products);
}
public ActionResult FilterProduct(string[] filter)
{
// Filter your list of products based on the parameter
return View("Index", products);
}
}