C# Asp.NETMVC4与SolrNet编程
对所有人来说,我真的需要帮助。我是SolrNet的新手,是asp.NETMVC4的beginer。我的项目是使用SolrNet并在asp.NETMVC4中创建的web应用程序中查看结果。所以,对于begin I,我想从SolrNet进行简单的查询并在web上显示它 到目前为止,我已经创建了以下内容: 使用名称启动新的空MVC项目:SOLRTest 在Package Manager控制台中,我完成了以下操作:Instal Package SolrNet-版本0.4.0-beta2 在HomeController中我使用以下代码:C# Asp.NETMVC4与SolrNet编程,c#,asp.net-mvc-4,solrnet,C#,Asp.net Mvc 4,Solrnet,对所有人来说,我真的需要帮助。我是SolrNet的新手,是asp.NETMVC4的beginer。我的项目是使用SolrNet并在asp.NETMVC4中创建的web应用程序中查看结果。所以,对于begin I,我想从SolrNet进行简单的查询并在web上显示它 到目前为止,我已经创建了以下内容: 使用名称启动新的空MVC项目:SOLRTest 在Package Manager控制台中,我完成了以下操作:Instal Package SolrNet-版本0.4.0-beta2 在HomeCon
using System;
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
using SOLRTest.Models;
using SolrNet;
namespace SOLRTest.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
try
{
var solr = ServiceLocator.Current.GetInstance<ISolrReadOnlyOperations<Customer>>();
SolrQueryResults<Customer> rezultati = solr.Query(new SolrQueryByField("customer", "INTS"));
return RedirectToAction("Index", "Home");
}
catch (Exception ex)
{
string error = ex.Message;
}
return View();
}
}
}
using SolrNet.Attributes;
namespace SOLRTest.Models
{
public class Customer
{
[SolrField("customer")]
public string customer { get; set; }
}
}
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="SOLRTest.Helpers" %>
<%@ Import namespace="SOLRTest.Models" %>
<!DOCTYPE html>
<html>
<body>
<div>
test
</div>
</body>
</html>
<% foreach (var izpis in SOLRTest.Models.Customer)
{ %>
<li>
<ul>
<%= Html.SolrFieldPropName<Customer>(izpis) %>
</ul>
</li>
<% } %>
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
using SolrNet;
namespace SOLRTest.Helpers
{
public static class HtmlHelperMapperExtensions
{
private static IReadOnlyMappingManager mapper
{
get { return ServiceLocator.Current.GetInstance<IReadOnlyMappingManager>(); }
}
public static string SolrFieldPropName<T>(this HtmlHelper helper, string fieldName)
{
return mapper.GetFields(typeof(T))[fieldName].Property.Name;
}
}
}
在视图中我使用以下代码:
using System;
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
using SOLRTest.Models;
using SolrNet;
namespace SOLRTest.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
try
{
var solr = ServiceLocator.Current.GetInstance<ISolrReadOnlyOperations<Customer>>();
SolrQueryResults<Customer> rezultati = solr.Query(new SolrQueryByField("customer", "INTS"));
return RedirectToAction("Index", "Home");
}
catch (Exception ex)
{
string error = ex.Message;
}
return View();
}
}
}
using SolrNet.Attributes;
namespace SOLRTest.Models
{
public class Customer
{
[SolrField("customer")]
public string customer { get; set; }
}
}
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="SOLRTest.Helpers" %>
<%@ Import namespace="SOLRTest.Models" %>
<!DOCTYPE html>
<html>
<body>
<div>
test
</div>
</body>
</html>
<% foreach (var izpis in SOLRTest.Models.Customer)
{ %>
<li>
<ul>
<%= Html.SolrFieldPropName<Customer>(izpis) %>
</ul>
</li>
<% } %>
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
using SolrNet;
namespace SOLRTest.Helpers
{
public static class HtmlHelperMapperExtensions
{
private static IReadOnlyMappingManager mapper
{
get { return ServiceLocator.Current.GetInstance<IReadOnlyMappingManager>(); }
}
public static string SolrFieldPropName<T>(this HtmlHelper helper, string fieldName)
{
return mapper.GetFields(typeof(T))[fieldName].Property.Name;
}
}
}
测试
对于助手我使用以下代码:
using System;
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
using SOLRTest.Models;
using SolrNet;
namespace SOLRTest.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
try
{
var solr = ServiceLocator.Current.GetInstance<ISolrReadOnlyOperations<Customer>>();
SolrQueryResults<Customer> rezultati = solr.Query(new SolrQueryByField("customer", "INTS"));
return RedirectToAction("Index", "Home");
}
catch (Exception ex)
{
string error = ex.Message;
}
return View();
}
}
}
using SolrNet.Attributes;
namespace SOLRTest.Models
{
public class Customer
{
[SolrField("customer")]
public string customer { get; set; }
}
}
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="SOLRTest.Helpers" %>
<%@ Import namespace="SOLRTest.Models" %>
<!DOCTYPE html>
<html>
<body>
<div>
test
</div>
</body>
</html>
<% foreach (var izpis in SOLRTest.Models.Customer)
{ %>
<li>
<ul>
<%= Html.SolrFieldPropName<Customer>(izpis) %>
</ul>
</li>
<% } %>
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
using SolrNet;
namespace SOLRTest.Helpers
{
public static class HtmlHelperMapperExtensions
{
private static IReadOnlyMappingManager mapper
{
get { return ServiceLocator.Current.GetInstance<IReadOnlyMappingManager>(); }
}
public static string SolrFieldPropName<T>(this HtmlHelper helper, string fieldName)
{
return mapper.GetFields(typeof(T))[fieldName].Property.Name;
}
}
}
使用System.Web.Mvc;
使用Microsoft.Practices.ServiceLocation;
使用SolrNet;
名称空间SOLRTest.Helpers
{
公共静态类HtmlHelperMappex
{
专用静态IReadOnlyMappingManager映射器
{
get{return ServiceLocator.Current.GetInstance();}
}
公共静态字符串SolrFieldPropName(此HtmlHelper助手,字符串字段名)
{
返回mapper.GetFields(typeof(T))[fieldName].Property.Name;
}
}
}
最后,在Global.asax中,我使用它连接到服务器:
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
using SOLRTest.Models;
using SolrNet;
namespace SOLRTest
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
Startup.Init<Customer>("http://service...local:8080/solr/msglog_pilot...");
}
}
}
使用System.Web.Http;
使用System.Web.Mvc;
使用System.Web.Routing;
使用SOLRTest.模型;
使用SolrNet;
名称空间SOLRTest
{
公共类MVC应用程序:System.Web.HttpApplication
{
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
Startup.Init(“http://service...local:8080/solr/msglog_pilot...");
}
}
}
我得到的错误是:
Server Error in '/' Application.
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0119: 'SOLR4.Models.Customer' is a 'type', which is not valid in the given context
Source Error:
Line 12: </body>
Line 13: </html>
Line 14: **<% foreach (var izpis in SOLR4.Models.Customer)**
Line 15: { %>
Line 16: <li>
“/”应用程序中出现服务器错误。
编译错误
描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码。
编译器错误消息:CS0119:“SOLR4.Models.Customer”是一个“类型”,在给定上下文中无效
源错误:
第12行:
第13行:
第14行:**
第16行:
SOLRTest.Models.Customer
是一种类型,而不是变量。不能对类型进行foreach。将foreach更改为在实际模型变量上循环
您也不会从控制器返回模型