Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.NETMVC4与SolrNet编程_C#_Asp.net Mvc 4_Solrnet - Fatal编程技术网

C# Asp.NETMVC4与SolrNet编程

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

对所有人来说,我真的需要帮助。我是SolrNet的新手,是asp.NETMVC4的beginer。我的项目是使用SolrNet并在asp.NETMVC4中创建的web应用程序中查看结果。所以,对于begin I,我想从SolrNet进行简单的查询并在web上显示它

到目前为止,我已经创建了以下内容:

使用名称启动新的空MVC项目:SOLRTest

在Package Manager控制台中,我完成了以下操作:Instal Package SolrNet-版本0.4.0-beta2

在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; }
    }
}
<%@ 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行:
  • 如何为MVC4中的视图编写正确的代码,也是我在Controller中进行简单查询的代码correct

    请帮忙。谢谢你的建议

    丹尼尔

    
    
  • SOLRTest.Models.Customer
    是一种类型,而不是变量。不能对类型进行foreach。将foreach更改为在实际模型变量上循环

    您也不会从控制器返回模型