2014-04-03 4 views
2

всем, мне действительно нужна помощь. Я новичок в SolrNet и начинаю в asp.net mvc 4. Мой проект - использовать SolrNet и просматривать результаты в веб-приложении, созданном в asp.net mvc 4. Итак, для начала я хочу просто сделать простой запрос из SolrNet и отобразить его в Интернете,Программирование Asp.net MVC 4 и SolrNet

до сих пор я создать это:

Начать новый пустой проект MVC с именем: SOLRTest

От Package Manager Console Я сделал это: Instal-пакет SolrNet -версия 0.4. 0-бета2

В HomeController Я использую этот код:

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; } 
    } 
} 

В View я использую этот код:

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

Для помощников I используйте этот код:

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; 
     } 
    } 
} 

И, наконец, в 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..."); 
     } 
    } 
} 

Ошибки, которые я получаю это:

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> 

Как написать правильный код для просмотра в MVC4, а также мой код для простого запроса в контроллере правильно.

Пожалуйста, помогите. Спасибо за идеи.

Daniel

ответ

0
<% foreach (var izpis in SOLRTest.Models.Customer) 
    { %> 
     <li> 
      <ul> 
       <%= Html.SolrFieldPropName<Customer>(izpis) %>     
      </ul> 

     </li> 
<% } %> 

SOLRTest.Models.Customer тип, а не переменная. Вы не можете предвидеть тип. Измените свой foreach на цикл по вашей фактической переменной модели.

Вы также не возвращаете свою модель с вашего контроллера.