Asp.net mvc &引用;“找不到资源”;尝试筛选网页上的项目时出错,MVC

Asp.net mvc &引用;“找不到资源”;尝试筛选网页上的项目时出错,MVC,asp.net-mvc,razor,Asp.net Mvc,Razor,我想在我的网站上过滤产品。但是,当我点击我的过滤器按钮时,我会收到一条错误消息,即找不到ressource 描述:HTTP404。资源或其任何依赖项可能已被删除、重命名或暂时不可用。检查下面的URL,确保拼写正确。 请求的URL:/Views/Product/Index.cshtml 这是我的过滤器(简化): 选择1 选择2 选择3 滤器 我没有向控制器添加任何代码。我不知道这是否是问题所在,但我也不知道我需要在控制器中添加什么 希望有人能帮我解决这个问题 完全是初学者。问题是服务器找不到请

我想在我的网站上过滤产品。但是,当我点击我的过滤器按钮时,我会收到一条错误消息,即找不到ressource

描述:HTTP404。资源或其任何依赖项可能已被删除、重命名或暂时不可用。检查下面的URL,确保拼写正确。 请求的URL:/Views/Product/Index.cshtml

这是我的过滤器(简化):


选择1
选择2
选择3
滤器
我没有向控制器添加任何代码。我不知道这是否是问题所在,但我也不知道我需要在控制器中添加什么

希望有人能帮我解决这个问题


完全是初学者。

问题是服务器找不到请求的内容

您需要将其添加到控制器:

public class ProductController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}
您需要将Index.cshtml添加到文件夹视图下的产品文件夹中

如果要向页面传递参数以应用过滤器,请执行以下操作:

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);
  }
}
然后Index.cshtml将具有如下模型:

   @model List<Product>
@foreach (var product in Model)
{
<p> @product.Name </p>
}
@型号列表
@foreach(模型中的var乘积)
{
@product.Name

}
例如,如果您只想从下拉列表中显示选定的产品,则这是您想要创建的表单:

        @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>

    }
@型号列表
@使用(@Html.BeginForm(“FilterProduct”,“Product”,new{enctype=“multipart/formdata”}))
{
@Html.AntiForgeryToken()
产品
@foreach(模型中的var乘积)
{
@产品名称
}
滤器
}
现在,您的控制器将如下所示:

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);
      }
}
公共类ProductController:控制器
{
公共行动结果索引()
{
//从数据库填充产品或数据
列表产品=新列表();
产品生产=新产品();
产品名称=“我的产品”;
产品。添加(prod);
返回视图(产品);
}
公共操作结果筛选器产品(字符串[]筛选器)
{
//根据参数筛选产品列表
返回视图(“索引”,产品);
}
}
这是链接到视图:

您不希望链接到页面,而是希望链接到控制器上的操作。例如,如果您有控制器操作,例如:

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框架有多种工具可用于帮助简化大部分工作,例如提供“HTML帮助程序”,它将根据路由规则和指定的控制器/操作为您确定URL。您一定会很好地浏览ASP.NET MVC的一些教程,并继续了解如何使用该框架。

但是为什么我需要控制器中带有“List products=new…”的代码部分?我在模型中创建列表already@usernumber:这似乎是这个答案的猜测/假设。我们不知道您的控制器或型号是什么样子。这个答案涉及到MVC的重要解释和示例,但没有一个与所问的问题真正相关,并且可能不适用于您的代码。您最初的问题只是关于404错误,这是由您的
@David中不正确的URL引起的。我的回答指出了404错误以及如何解决它。它在整个代码中都有注释,并为示例目的进行了注释。我试着根据他最初的问题和密码来判断。好的。但是我能用我的索引控制器吗?我尝试了这个方法,但仍然得到了相同的错误:public ActionResult Index(int?category){return View(category);}并以我的形式更改了“action=“~/Views/Product/Index”也尝试了“action=“~/Controllers/ProduktController/Index”“@usernumber:什么是“索引控制器”"? 在这种情况下,您的控制器不是名为
ProductController
?(根据您的视图所在的
“Product”
文件夹)以及
action=“~/Controllers/ProduktController/Index”
来自何处?这当然会给你同样的错误,同样的原因,同样的答案会再次回答你。你不能只是编出自己的URL,然后期望系统理解你的意思。请从一些关于ASP.NET MVC的入门教程开始,学习如何使用此框架。
"~/Views/Product/Index.cshtml"
public class ProductsController : Controller
{
    public ActionResult Create(Product product)
    {
        // code to create a "product"
    }
}
"/Products/Create"