Elasticsearch.Net使用教程 MVC4图书管理系统(2)

 更新时间:2021年9月22日 10:06  点击:1460

本文实例为大家分享了MVC4图书管理系统的制作教程,供大家参考,具体内容如下

首先项目结构图:

Model层的相关代码如下:
Book.cs代码如下:

public class Book 
 { 
 [Key] 
 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
 public Guid Id { get; set; } 
 
 [MaxLength(500)] 
 
 [Display(Name = "标题")] 
 public string Title { get; set; } 
 
 [MaxLength(5000)] 
 [Display(Name = "前言")] 
 public string Foreword { get; set; } 
 
 [Display(Name = "总页数")] 
 public int Pages { get; set; } 
 
 [Display(Name = "作者")] 
 public string Author { get; set; } 
 } 

public class AppContext:DbContext 
 { 
 public AppContext() 
 { 
  
 } 
 public DbSet<Book> Books { get; set; } 
 } 

ViewModels的相关:

public class SearchViewModel 
 { 
 public string Query { get; set; } 
 
 public IEnumerable<IHit<Book>> Results { get; set; } 
 
 public IDictionary<string, Suggest[]> Suggestions { get; set; } 
 
 public long Elapsed { get; set; } 
 
 } 

接下来就HomeController.cs和BooksController.cs的代码:

public class HomeController : Controller 
 { 
 private SearchService _searchService; 
 public HomeController() 
 { 
  _searchService = new SearchService(); 
 } 
 public ActionResult Index() 
 { 
 
  return View(); 
 } 
 
 public ActionResult Search(string query, int page = 0, int pageSize = 10) 
 { 
 
  var result = _searchService.Find(query, page, pageSize); 
  var suggestion = _searchService.FindPhraseSuggestion(query, 0, 3); 
 
  var viewModel = new SearchViewModel { Query = query, Results = result.Item1,Elapsed = result.Item2, Suggestions = suggestion }; 
 
 
  return View("Index", viewModel); 
 } 
 
 } 

public class BooksController : Controller 
 { 
 private AppContext db = new AppContext(); 
 
 public ActionResult Index() 
 { 
  return View(db.Books.ToList()); 
 } 
 
 public ActionResult Details(Guid? id) 
 { 
  if (id == null) 
  { 
  return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
  } 
  Book book = db.Books.Find(id); 
  if (book == null) 
  { 
  return HttpNotFound(); 
  } 
  return View(book); 
 } 
 
 public ActionResult Create() 
 { 
  return View(); 
 } 
 
  
 [HttpPost] 
 [ValidateAntiForgeryToken] 
 public ActionResult Create([Bind(Include="Id,Title,Foreword,Pages,Author")] Book book) 
 { 
  if (ModelState.IsValid) 
  { 
  book.Id = Guid.NewGuid(); 
  db.Books.Add(book); 
  db.SaveChanges(); 
 
  //添加书 
  Elasticsearch.Elasticsearch.Client.Index<Book>(book); 
 
 
 
  return RedirectToAction("Index"); 
  } 
 
  return View(book); 
 } 
 
 public ActionResult Edit(Guid? id) 
 { 
  if (id == null) 
  { 
  return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
  } 
  Book book = db.Books.Find(id); 
  if (book == null) 
  { 
  return HttpNotFound(); 
  } 
  return View(book); 
 } 
 
 
 [HttpPost] 
 [ValidateAntiForgeryToken] 
 public ActionResult Edit([Bind(Include="Id,Title,Foreword,Pages,Author")] Book book) 
 { 
  if (ModelState.IsValid) 
  { 
  db.Entry(book).State = EntityState.Modified; 
  db.SaveChanges(); 
  return RedirectToAction("Index"); 
  } 
  return View(book); 
 } 
 
 public ActionResult Delete(Guid? id) 
 { 
  if (id == null) 
  { 
  return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
  } 
  Book book = db.Books.Find(id); 
  if (book == null) 
  { 
  return HttpNotFound(); 
  } 
  return View(book); 
 } 
 
 [HttpPost, ActionName("Delete")] 
 [ValidateAntiForgeryToken] 
 public ActionResult DeleteConfirmed(Guid id) 
 { 
  Book book = db.Books.Find(id); 
  db.Books.Remove(book); 
  db.SaveChanges(); 
  return RedirectToAction("Index"); 
 } 
 
 public JsonResult Reindex() 
 { 
  foreach (var book in db.Books) 
  { 
  //Indexing book 
  Elasticsearch.Elasticsearch.Client.Index<Book>(book); 
  } 
  return Json("OK",JsonRequestBehavior.AllowGet); 
 } 
 
 protected override void Dispose(bool disposing) 
 { 
  if (disposing) 
  { 
  db.Dispose(); 
  } 
  base.Dispose(disposing); 
 } 
 } 

Elasticsearch辅助类:
首先是Elasticsearch.cs

public class Elasticsearch 
 { 
 private static ElasticClient _client; 
 public static ElasticClient Client 
 { 
  get 
  { 
  if (_client == null) 
  { 
   //连接配置 
   var setting = new ConnectionSettings(ElasticsearchConfiguration.Connection,ElasticsearchConfiguration.DefaultIndex); 
   _client = new ElasticClient(setting); 
  } 
  return _client; 
  } 
 
 } 
 } 

ElasticsearchConfiguration.cs类

public static class ElasticsearchConfiguration 
 { 
 public static string Host { get { return "http://localhost"; } } 
 
 public static long Port { get { return 9200; } } 
 
 public static Uri Connection 
 { 
  get { return new Uri(string.Format("{0}:{1}", Host, Port)); } 
 } 
 
 public static string DefaultIndex 
 { 
  get { return "library"; } 
 } 
 } 

SearchService.cs代码:

public class SearchService 
 { 
 public double MinScore { get {return 0.0005; }} 
 
 //高亮标记前缀 
 public string PreHighlightTag 
 { 
  get { return @"<strong>"; } 
 } 
 
 //高亮标记后缀 
 public string PostHighlightTag 
 { 
  get { return @"</strong>"; } 
 } 
 
 
 public Tuple< IEnumerable<IHit<Book>>,long> Find(string query, int page = 0, int pageSize = 10) 
 { 
  var result = Elasticsearch.Elasticsearch.Client.Search<Book>(s => s 
  .From(page * pageSize) 
  .Size(pageSize) 
  .MinScore(MinScore) 
  .Highlight(h => h 
   .PreTags(PreHighlightTag) 
   .PostTags(PostHighlightTag) 
   .OnFields( 
   f => f.OnField(b => b.Foreword), 
   f => f.OnField(b => b.Title) 
   )) 
  .Query(q => q.QueryString(qs => qs.Query(query).UseDisMax()))); 
 
  return new Tuple<IEnumerable<IHit<Book>>, long>(result.Hits,result.ElapsedMilliseconds); 
 } 
 
 //查找短语建议 
 public IDictionary<string, Suggest[]> FindPhraseSuggestion(string phrase, int page = 0, int pageSize = 5) 
 { 
  var result = Elasticsearch.Elasticsearch.Client.Search<Book>(s => s 
  .From(page*pageSize) 
  .Size(pageSize) 
  .SuggestPhrase("did-you-mean", ps => ps 
   .Text(phrase) 
   .OnField(f => f.Foreword)) 
  .Query(q => q.MatchAll())); 
  
  return result.Suggest; 
 } 
 
 
 public IEnumerable<IHit<Book>> FindAll() 
 { 
  var result = Elasticsearch.Elasticsearch.Client.Search<Book>(s => s.AllIndices()); 
  return result.Hits; 
 } 
 
 } 

Views视图
Books文件夹下:
Index.cshtml:

@model IEnumerable<Library.Web.Models.Book> 
 
@{ 
 ViewBag.Title = "Index"; 
 Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
 
<h2>Index</h2> 
 
<p> 
 @Html.ActionLink("创建新书", "Create") 
</p> 
<table class="table"> 
 <tr> 
 <th> 
  @Html.DisplayNameFor(model => model.Title) 
 </th> 
 <th> 
  @Html.DisplayNameFor(model => model.Foreword) 
 </th> 
 <th> 
  @Html.DisplayNameFor(model => model.Pages) 
 </th> 
 <th> 
  @Html.DisplayNameFor(model => model.Author) 
 </th> 
 <th></th> 
 </tr> 
 
@foreach (var item in Model) { 
 <tr> 
 <td> 
  @Html.DisplayFor(modelItem => item.Title) 
 </td> 
 <td> 
  @Html.DisplayFor(modelItem => item.Foreword) 
 </td> 
 <td> 
  @Html.DisplayFor(modelItem => item.Pages) 
 </td> 
 <td> 
  @Html.DisplayFor(modelItem => item.Author) 
 </td> 
 <td> 
  @Html.ActionLink("编辑", "Edit", new { id=item.Id }) | 
  @Html.ActionLink("详细", "Details", new { id=item.Id }) | 
  @Html.ActionLink("删除", "Delete", new { id=item.Id }) 
 </td> 
 </tr> 
} 
 
</table> 

Edit.cshtml:

@model Library.Web.Models.Book 
 
@{ 
 ViewBag.Title = "Edit"; 
 Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
 
<h2>Edit</h2> 
 
 
@using (Html.BeginForm()) 
{ 
 @Html.AntiForgeryToken() 
 
 <div class="form-horizontal"> 
 <h4>Book</h4> 
 <hr /> 
 @Html.ValidationSummary(true) 
 @Html.HiddenFor(model => model.Id) 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Title, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.EditorFor(model => model.Title) 
  @Html.ValidationMessageFor(model => model.Title) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Foreword, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.TextAreaFor(model => model.Foreword) 
  @Html.ValidationMessageFor(model => model.Foreword) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Pages, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.EditorFor(model => model.Pages) 
  @Html.ValidationMessageFor(model => model.Pages) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Author, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.EditorFor(model => model.Author) 
  @Html.ValidationMessageFor(model => model.Author) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  <div class="col-md-offset-2 col-md-10"> 
  <input type="submit" value="Save" class="btn btn-default" /> 
  </div> 
 </div> 
 </div> 
} 
 
<div> 
 @Html.ActionLink("返回列表", "Index") 
</div> 
 
@section Scripts { 
 @Scripts.Render("~/bundles/jqueryval") 
} 

Details.cshtml:

@model Library.Web.Models.Book 
 
@{ 
 ViewBag.Title = "Details"; 
 Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
 
<h2>Details</h2> 
 
<div> 
 <h4>Book</h4> 
 <hr /> 
 <dl class="dl-horizontal"> 
 <dt> 
  @Html.DisplayNameFor(model => model.Title) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Title) 
 </dd> 
 
 <dt> 
  @Html.DisplayNameFor(model => model.Foreword) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Foreword) 
 </dd> 
 
 <dt> 
  @Html.DisplayNameFor(model => model.Pages) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Pages) 
 </dd> 
 
 <dt> 
  @Html.DisplayNameFor(model => model.Author) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Author) 
 </dd> 
 
 </dl> 
</div> 
<p> 
 @Html.ActionLink("编辑", "Edit", new { id = Model.Id }) | 
 @Html.ActionLink("返回列表", "Index") 
</p> 

Delete.cshtml:

@model Library.Web.Models.Book 
 
@{ 
 ViewBag.Title = "Delete"; 
 Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
 
<h2>Delete</h2> 
 
<h3>Are you sure you want to delete this?</h3> 
<div> 
 <h4>Book</h4> 
 <hr /> 
 <dl class="dl-horizontal"> 
 <dt> 
  @Html.DisplayNameFor(model => model.Title) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Title) 
 </dd> 
 
 <dt> 
  @Html.DisplayNameFor(model => model.Foreword) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Foreword) 
 </dd> 
 
 <dt> 
  @Html.DisplayNameFor(model => model.Pages) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Pages) 
 </dd> 
 
 <dt> 
  @Html.DisplayNameFor(model => model.Author) 
 </dt> 
 
 <dd> 
  @Html.DisplayFor(model => model.Author) 
 </dd> 
 
 </dl> 
 
 @using (Html.BeginForm()) { 
 @Html.AntiForgeryToken() 
 
 <div class="form-actions no-color"> 
  <input type="submit" value="Delete" class="btn btn-default" /> | 
  @Html.ActionLink("返回列表", "Index") 
 </div> 
 } 
</div> 

Create.cshtml:

@model Library.Web.Models.Book 
 
@{ 
 ViewBag.Title = "Create"; 
 Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
 
<h2>创建</h2> 
 
 
@using (Html.BeginForm()) 
{ 
 @Html.AntiForgeryToken() 
 
 <div class="form-horizontal"> 
 <h4>Book</h4> 
 <hr /> 
 @Html.ValidationSummary(true) 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Title, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.EditorFor(model => model.Title) 
  @Html.ValidationMessageFor(model => model.Title) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Foreword, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.TextAreaFor(model => model.Foreword) 
  @Html.ValidationMessageFor(model => model.Foreword) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Pages, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.EditorFor(model => model.Pages) 
  @Html.ValidationMessageFor(model => model.Pages) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  @Html.LabelFor(model => model.Author, new { @class = "control-label col-md-2" }) 
  <div class="col-md-10"> 
  @Html.EditorFor(model => model.Author) 
  @Html.ValidationMessageFor(model => model.Author) 
  </div> 
 </div> 
 
 <div class="form-group"> 
  <div class="col-md-offset-2 col-md-10"> 
  <input type="submit" value="创建" class="btn btn-default" /> 
  </div> 
 </div> 
 </div> 
} 
 
<div> 
 @Html.ActionLink("回到列表", "Index") 
</div> 
 
@section Scripts { 
 @Scripts.Render("~/bundles/jqueryval") 
} 

Home->Index.cshtml

@model Library.Web.ViewModels.SearchViewModel 
@{ 
 ViewBag.Title = "Elasticsearch"; 
} 
 
<div class="jumbotron"> 
 <h1>Elasticsearch入门</h1> 
 <p class="lead">安装和配置群集</p> 
 <ol> 
 <li> 
  <a href="http://www.oracle.com/technetwork/java/ 
javase/downloads/index.html">安装Java</a> 
 </li> 
 <li> 
  <a href="http://www.elasticsearch.org/ 
download/">安装Elasticsearch</a> 
 </li> 
 <li>运行Elasticsearch</li> 
 <li><a href="/Books/Create">增加一些书籍</a></li> 
 </ol> 
</div> 
 
 
@if (Model == null) 
{ 
 return; 
} 
<div style="margin-top: 30px;"> 
 @if (Model.Suggestions.Any(x => x.Key == "did-you-mean")) 
 { 
 <span>你的意思是: </span> 
 foreach (var suggestions in Model.Suggestions["did-you-mean"]) 
 { 
  var count = 0; 
  foreach (var suggestion in suggestions.Options) 
  { 
  <a href="/Home/Search?query=@suggestion.Text"><strong>@suggestion.Text </strong> </a> 
  count++; 
  } 
  if (count == 0) 
  { 
  <span class="alert-danger">没有建议!</span> 
  } 
 
 } 
 } 
</div> 
 
<h3><strong>Results for:</strong> @Model.Query</h3> 
 
@if (Model != null) 
{ 
 <table class="table table-condensed"> 
 <thead> 
  <tr><th>文档的分数(排名相关度)</th><th>Title</th><th>Content</th><th>Author</th></tr> 
 </thead> 
 
 <tbody> 
  @foreach (var result in Model.Results) 
  { 
  <tr> 
   <td>@result.Score</td> 
   <td> 
   <a href="/Books/Details/@result.Id"> 
    @if (result.Highlights != null && result.Highlights.Any(x => x.Key == "title")) 
    { 
    var hl = result.Highlights.FirstOrDefault(x => x.Key == "title"); 
    foreach (var h in hl.Value.Highlights) 
    { 
     WriteLiteral(h); 
    } 
    } 
    else 
    { 
    WriteLiteral(result.Source.Title); 
    } 
   </a> 
   </td> 
 
   <td> 
   @if (result.Highlights != null && result.Highlights.Any(x => x.Key == "foreword")) 
   { 
    var hl = result.Highlights.FirstOrDefault(x => x.Key == "foreword"); 
    foreach (var h in hl.Value.Highlights) 
    { 
    WriteLiteral(h + "..."); 
    } 
   } 
 
   </td> 
 
   <td>@result.Source.Author</td> 
  </tr> 
 
  } 
  @if (!Model.Results.Any()) 
  { 
  <tr> 
   <td colspan="4" class="alert alert-danger" style="text-align:center;">没有结果发现:(</td> 
  </tr> 
  } 
 </tbody> 
 
 </table> 
 <h4><span class="label label-default">@Model.Results.Count()</span>搜索结果用了 @Model.Elapsed 毫秒</h4> 
} 

_Layout.cshtml

<!DOCTYPE html> 
<html> 
<head> 
 <meta charset="utf-8" /> 
 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 <title>@ViewBag.Title</title> 
 @Styles.Render("~/Content/css") 
 @Scripts.Render("~/bundles/modernizr") 
 
</head> 
<body> 
 <div class="navbar navbar-inverse navbar-fixed-top"> 
 <div class="container"> 
  <div class="navbar-header"> 
  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
   <span class="icon-bar"></span> 
   <span class="icon-bar"></span> 
   <span class="icon-bar"></span> 
  </button> 
  @Html.ActionLink("Elasticsearch MVC示例", "Index", "Home", null, new { @class = "navbar-brand" }) 
  </div> 
  <div class="navbar-collapse collapse"> 
  <ul class="nav navbar-nav"> 
   <li>@Html.ActionLink("Home", "Index", "Home")</li> 
   <li>@Html.ActionLink("Books", "Index", "Books")</li> 
  </ul> 
 
 
  @using (Html.BeginForm("Search", "Home", FormMethod.Get,new {@class = "navbar-form navbar-left"})) 
  { 
   <div class="form-group"> 
   <input class="form-control" type="text" placeholder="搜索" name="query" /> 
   </div> 
   <button type="submit" class="btn btn-default">提交</button> 
  } 
 
 
 
  </div> 
 
 </div> 
 </div> 
 <div class="container body-content"> 
 @RenderBody() 
 <hr /> 
 <footer> 
  <p>&copy; @DateTime.Now.Year - Elasticsearch, Nest, ASP.NET 应用</p> 
 </footer> 
 </div> 
 
 @Scripts.Render("~/bundles/jquery") 
 @Scripts.Render("~/bundles/bootstrap") 
 @RenderSection("scripts", required: false) 
</body> 
</html> 

结果如图:


列表页


创建页:


搜索结果页:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • .NET Core下使用Kafka的方法步骤

    这篇文章主要介绍了.NET Core下使用Kafka的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • Win10 IIS 安装.net 4.5的方法

    这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • Elasticsearch工具cerebro的安装与使用教程

    这篇文章主要介绍了Elasticsearch工具cerebro的安装与使用教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-08
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • docker 启动elasticsearch镜像,挂载目录后报错的解决

    这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-20
  • 护卫神 主机管理系统使用说明(MSSQL管理)

    护卫神·主机管理系统该版本支持在Windows Server 200320082012,含32位和64位,直接开设配置WEB站、FTP站,以及SQL Server和MySQL,是您开设和管理虚拟主机的绝好帮手。但是对于新用户可能在使用上有一些困难,因此请仔细阅读如下说明文档...2016-01-27
  • 详解ASP.NET Core 中基于工厂的中间件激活的实现方法

    这篇文章主要介绍了ASP.NET Core 中基于工厂的中间件激活的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • C#使用Ado.Net更新和添加数据到Excel表格的方法

    这篇文章主要介绍了C#使用Ado.Net更新和添加数据到Excel表格的方法,较为详细的分析了OLEDB的原理与使用技巧,可实现较为方便的操作Excel数据,需要的朋友可以参考下...2020-06-25
  • .NET C#利用ZXing生成、识别二维码/条形码

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。这篇文章主要给大家介绍了.NET C#利用ZXing生成、识别二维码/条形码的方法,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴。...2020-06-25
  • asp.net通过消息队列处理高并发请求(以抢小米手机为例)

    这篇文章主要介绍了asp.net通过消息队列处理高并发请求(以抢小米手机为例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • ASP.NET单选按钮控件RadioButton常用属性和方法介绍

    RadioButton又称单选按钮,其在工具箱中的图标为 ,单选按钮通常成组出现,用于提供两个或多个互斥选项,即在一组单选钮中只能选择一个...2021-09-22
  • ASP.NET 2.0中的数据操作:使用两个DropDownList过滤的主/从报表

    在前面的指南中我们研究了如何显示一个简单的主/从报表, 该报表使用DropDownList和GridView控件, DropDownList填充类别,GridView显示选定类别的产品. 这类报表用于显示具有...2016-05-19
  • 详解.NET Core 使用HttpClient SSL请求出错的解决办法

    这篇文章主要介绍了.NET Core 使用HttpClient SSL请求出错的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
  • Python调用.NET库的方法步骤

    这篇文章主要介绍了Python调用.NET库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-09