【问题标题】:ASP.net MVC Resource Cannot Be Found找不到 ASP.net MVC 资源
【发布时间】:2009-12-15 06:35:27
【问题描述】:

我有一个带有以下部分代码的 PartsController:

Function Search(ByVal searchtext As String, ByVal SearchType As String) As ActionResult

If SearchType = "PARTNAME" Then
Dim SearchResult = From p In _entities.PartList _
Where p.PARTNAME = searchtext _
Select p
Return View()
End If
If SearchType = "NSN" Then
Dim SearchResult = From p In _entities.PartList _
Where p.NSN = searchtext _
Select p
Return View()
End If
Return View("UnknownType")
End Function
Function Result(ByVal id As String, ByVal SearchResult As String) As ActionResult
Return View(SearchResult)

End Function

我的 SearchResult 视图存储在 Views/Parts/SearchResult.aspx 中。但是,当我运行应用程序时,我收到 Resource Cannot Be Found Requested URL /PartsController/Search

问题 2:有人可以指点我在视图中显示搜索结果的 VB 教程吗?也就是说,我需要有关如何将 SearchResult 视图组合在一起的示例,以便它仅从我的表中检索搜索字符串中匹配的项目。

非常感谢您的帮助!

全球.asax:

' Note: For instructions on enabling IIS6 or IIS7 classic mode, 
' visit http://go.microsoft.com/?LinkId=9394802

Public Class MvcApplication
Inherits System.Web.HttpApplication

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

' MapRoute takes the following parameters, in order:
' (1) Route name
' (2) URL with parameters
' (3) Parameter defaults
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = ""} _
)
routes.MapRoute( _
"Root", _
"", _
"(controller)/(action)/(id)", _
New With {.controller = "Home", .action = "Index", .id = ""} _
)
End Sub

Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
End Sub
End Class

请注意,此应用程序在 Windows 2003 服务器 (IIS6) 上运行。我应该对 global.asax 做进一步的修改吗?

再次感谢, 席德

【问题讨论】:

  • 你的路线是如何定义的,你能不能也发布一下?
  • 还有什么我应该添加到 global.asax 的吗?谢谢:)

标签: asp.net-mvc


【解决方案1】:

你试过这个网址:/Parts/Search 吗?

对于搜索结果,您的模型/数据上下文应包含一个接受搜索条件作为参数并返回匹配结果的函数。

类似:

Function AddQuerySearchCriteria(ByVal query As IQueryable, ByVal searchCriteria As SearchCriteria) As IQueryable
        If Not String.IsNullOrEmpty(searchCriteria.Keyword) Then
            Dim keyword As String = searchCriteria.Keyword.ToLower
            query = query.Where(customer=, Greater, (customer.FirstName.ToLower.Contains(keyword))
        End If
        Return query
End Function

然后您的控制器将调用此函数将数据返回到 SearchResults 视图。

【讨论】:

  • 这是我可以添加到模型文件夹中的模块的东西吗?或者是否有其他首选位置可以插入此代码?
  • 这取决于您的设置,但很可能会进入您的零件模型。 (即;模型/Parts.vb)
  • 非常感谢!我已经创建了 Parts.vb,并将在您上面建议的内容中添加类似的代码。您发现任何有用的教程/链接?很多 MVC 的东西似乎是用 C# 而不是 VB 编写的 :(
【解决方案2】:

试试这个网址:http://servername/Parts/Search,注意我删除了控制器后缀。默认routing配置下,具体控制器类名中需要省略Controller部分

因为您没有提供足够的信息,所以很难准确判断是什么原因。最常见的原因之一是 iis 中的配置不正确。 请参考:Using ASP.NET MVC with Different Versions of IIS

关于vb教程,可以在这里找到:http://www.asp.net/learn/mvc/tutorial-21-vb.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多