ebMail 帮助器 - 众多有用的 ASP.NET Web 帮助器之一。
WebMail 帮助器
WebMail 帮助器让发送邮件变得更简单,它按照 SMTP(Simple Mail Transfer Protocol 简单邮件传输协议)从 Web 应用程序发送邮件。
前提:电子邮件支持
为了演示如何使用电子邮件,我们将创建一个输入页面,让用户提交一个页面到另一个页面,并发送一封关于支持问题的邮件。
第一:编辑您的 AppStart 页面
如果在本教程中您已经创建了 Demo 应用程序,那么您已经有一个名为 _AppStart.cshtml 的页面,内容如下:
_AppStart.cshtml
@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true);
}
SP.NET 帮助器 - 对象参考手册
Analytics 对象参考手册(Google)
Helper | 描述 |
---|---|
Analytics.GetGoogleHtml(webPropertyId) | 为指定的 ID 呈现 Google Analytics JavaScript 代码。 |
Analytics.GetStatCounterHtml(project, security) | 为指定的项目呈现 StatCounter Analytics JavaScript 代码。 |
Analytics.GetYahooHtml(account) | 为指定的账号呈现 Yahoo Analytics JavaScript 代码。 |
Bing 对象参考手册
Helper | 描述 |
---|---|
Bing.SearchBox([boxWidth]) | 给 Bing 传递搜索。您可以设置 Bing.SiteUrl 和 Bing.SiteTitle 属性来设定站点搜索和搜索框的标题,通常是在 _AppStart 页面设置这些属性。 |
Bing.AdvancedSearchBox([, boxWidth] [, resultWidth] [, resultHeight] [, themeColor] [, locale]) | 用可选的格式显示 Bing 搜索结果在页面上。您可以设置 Bing.SiteUrl 和 Bing.SiteTitle 属性来设定站点搜索和搜索框的标题,通常是在 _AppStart 页面设置这些属性。 |
Chart 对象参考手册
Helper | 描述 |
---|---|
Chart(width, height [, template] [, templatePath]) | 初始化图表。 |
Chart.AddLegend([title] [, name]) | 给图表添加一个图例。 |
Chart.AddSeries([name] [, chartType] [, chartArea] [, axisLabel] [, legend] [, markerStep] [, xValue] [, xField] [, yValues] [, yFields] [, options]) | 给图表添加一系列数据。 |
Crypto 对象参考手册
Helper | 描述 |
---|---|
Crypto.Hash(string [, algorithm]) Crypto.Hash(bytes [, algorithm]) | 返回指定数据的哈希。默认算法是 sha256。 |
Facebook 对象参考手册
Helper | 描述 |
---|---|
Facebook.LikeButton(href [, buttonLayout] [, showFaces] [, width] [, height] [, action] [, font] [, colorScheme] [, refLabel]) | 让 Facebook 用户连接到网页。 |
FileUpload 对象参考手册
Helper | 描述 |
---|---|
FileUpload.GetHtml([initialNumberOfFiles] [,allowMoreFilesToBeAdded] [, includeFormTag] [, addText] [, uploadText]) | 为上传文件呈现 UI。 |
GamerCard 对象参考手册
Helper | 描述 |
---|---|
GamerCard.GetHtml(gamerTag) | 呈现指定的 Xbox gamer 标签。 |
Gravatar 对象参考手册
Helper | 描述 |
---|---|
Gravatar.GetHtml(email [, imageSize] [, defaultImage] [, rating] [, imageExtension] [, attributes]) | 为指定的电子邮件地址呈现 Gravatar 图像。 |
Json 对象参考手册
Helper | 描述 |
---|---|
Json.Encode(object) | 用 JavaScript Object Notation (JSON) 把数据对象转换为字符串。 |
Json.Decode(string) | 转换 JSON 编码的输入字符串为您指定的数据对象。 |
LinkShare 对象参考手册
Helper | 描述 |
---|---|
LinkShare.GetHtml(pageTitle [, pageLinkBack] [, twitterUserName] [, additionalTweetText] [, linkSites]) | 使用指定的标题和可选的 URL 呈现社会网络链接。 |
ModelState 对象参考手册
Helper | 描述 |
---|---|
ModelStateDictionary.AddError(key, errorMessage) | 关联错误信息和一个表单域。使用 ModelState 帮助器访问成员。 |
ModelStateDictionary.AddFormError(errorMessage) | 关联错误信息和一个表单。使用 ModelState 帮助器访问成员。 |
ModelStateDictionary.IsValid | 如果没有验证错误,返回 true。使用 ModelState 帮助器访问成员。 |
ObjectInfo 对象参考手册
Helper | 描述 |
---|---|
ObjectInfo.Print(value [, depth] [, enumerationLength]) | 呈现一个对象和所有子对象的属性和值。 |
Recaptcha 对象参考手册
Helper | 描述 |
---|---|
Recaptcha.GetHtml([, publicKey] [, theme] [, language] [, tabIndex]) | 呈现 reCAPTCHA 验证测试。 |
ReCaptcha.PublicKey ReCaptcha.PrivateKey | 设置 reCAPTCHA 服务的公共和私有密钥。通常是在_AppStart 页面设置这些属性。 |
ReCaptcha.Validate([, privateKey]) | 返回 reCAPTCHA 测试结果。 |
ServerInfo.GetHtml() | Renders 呈现有关 ASP.NET Web Pages 的状态信息。 |
Twitter 对象参考手册
Helper | 描述 |
---|---|
Twitter.Profile(twitterUserName) | 为指定的用户呈现 Twitter 流。 |
Twitter.Search(searchQuery) | 为指定的搜索文本呈现 Twitter 流。 |
Video 对象参考手册
Helper | 描述 |
---|---|
Video.Flash(filename [, width, height]) | 为指定的文件呈现宽度和高度可选的 Flash 视频播放。 |
Video.MediaPlayer(filename [, width, height]) | 为指定的文件呈现宽度和高度可选 的 Windows Media 播放器。 |
Video.Silverlight(filename, width, height) | 为指定的 .xap 文件呈现所需的宽度和高度 的 Silverlight 播放器。 |
WebCache 对象参考手册
Helper | 描述 |
---|---|
WebCache.Get(key) | 通过 key 返回指定的对象,如果对象未找到则返回 null。 |
WebCache.Remove(key) | 通过 key 从缓存中删除指定的对象。 |
WebCache.Set(key, value [, minutesToCache] [, slidingExpiration]) | 通过 key 把 value 放置到指定名称的缓存中。 |
WebGrid 对象参考手册
Helper | 描述 |
---|---|
WebGrid(data) | Creates a 使用查询数据创建一个新的 WebGrid 对象。 |
WebGrid.GetHtml() | Renders markup 显示数据在 HTML 表格中。 |
WebGrid.Pager() | 为 WebGrid 对象呈现一个页面。 |
WebImage 对象参考手册
Helper | 描述 |
---|---|
WebImage(path) | 从指定的路径加载一个图像。 |
WebImage.AddImagesWatermark(image) | 为指定图像加水印。 |
WebImage.AddTextWatermark(text) | 为图像添加指定文本。 |
WebImage.FlipHorizontal() WebImage.FlipVertical() | 水平/垂直翻转图像 |
WebImage.GetImageFromRequest() | 当图像被传送到一个文件上传页面时,加载图像。 |
WebImage.Resize(width, height) | 调整图像大小。 |
WebImage.RotateLeft() WebImage.RotateRight() | 向左或向右旋转图像。 |
WebImage.Save(path [, imageFormat]) | 保存图像到指定路径。 |
本文中,让我们尝试构建自定义 HTML Hepler以在 .NET Core MVC 应用程序中提供分页。首先对不熟悉的人简单介绍一下,什么是HTML Helper(助手):
在Web应用程序中,如果要显示大量记录,则需要提供分页。在本文中,我们通过创建自定义 HTML Helper 在 .NET Core MVC 应用程序中实现分页。为了简单起见,我们只能使用数字来表示数据。
假设我们需要在多页中显示 55 条记录,每页有 10 个项目,如上所示。
打开 Visual Studio 2019 > 创建 .NET Core MVC 应用程序,如下所示。
项目命名为 HTMLHelpersApp。
选择 .NET 框架版本。
创建所需的模型和帮助文件。
在 Number.cs 中添加代码。该模型捕获用户输入。它只有一个属性:“InputNumber”。
using System;
using System.ComponentModel.DataAnnotations;
namespace HTMLHelpersApp.Models
{
public class Number
{
//validation for required, only numbers, allowed range-1 to 500
[Required(ErrorMessage="Value is Required!. Please enter value between 1 and 500.")]
[RegularExpression(@"^\d+$", ErrorMessage="Only numbers are allowed. Please enter value between 1 and 500.")]
[Range(1, 500, ErrorMessage="Please enter value between 1 and 500.")]
public int InputNumber=1;
}
}
现在让我们添加一个公共类 PageInfo.cs。创建新文件夹 Common 并添加 PageInfo.cs 类。
在 PageInfo.cs 中添加代码:
根据总项目数和每页项目数,计算页面的总页数、第一个项目和最后一个项目。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace HTMLHelpersApp.Common
{
public class PageInfo
{
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int CurrentPage { get; set; }
public PageInfo()
{
CurrentPage=1;
}
//starting item number in the page
public int PageStart
{
get { return ((CurrentPage - 1) * ItemsPerPage + 1); }
}
//last item number in the page
public int PageEnd
{
get
{
int currentTotal=(CurrentPage - 1) * ItemsPerPage + ItemsPerPage;
return (currentTotal < TotalItems ? currentTotal : TotalItems);
}
}
public int LastPage
{
get { return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage); }
}
}
}
现在我们来到最重要的部分:创建自定义 HTML 助手。
public static IHtmlContent PageLinks(this IHtmlHelper htmlHelper, PageInfo pageInfo, Func<int, string> PageUrl)
5.取2个参数
使用标签构建器创建锚标签。
TagBuilder tag=new TagBuilder("a");
Add attributes
tag.MergeAttribute("href", hrefValue);
tag.InnerHtml.Append(" "+ innerHtml + " ");
样式也可以用作属性。
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;
using System;
using System.Text;
namespace HTMLHelpersApp.Common
{
public static class PagingHtmlHelpers
{
public static IHtmlContent PageLinks(this IHtmlHelper htmlHelper, PageInfo pageInfo, Func<int, string> PageUrl)
{
StringBuilder pagingTags=new StringBuilder();
//Prev Page
if (pageInfo.CurrentPage > 1)
{
pagingTags.Append(GetTagString("Prev", PageUrl(pageInfo.CurrentPage - 1)));
}
//Page Numbers
for (int i=1; i <=pageInfo.LastPage; i++)
{
pagingTags.Append(GetTagString(i.ToString(), PageUrl(i)));
}
//Next Page
if (pageInfo.CurrentPage < pageInfo.LastPage)
{
pagingTags.Append(GetTagString("Next", PageUrl(pageInfo.CurrentPage + 1)));
}
//paging tags
return new HtmlString(pagingTags.ToString());
}
private static string GetTagString(string innerHtml, string hrefValue)
{
TagBuilder tag=new TagBuilder("a"); // Construct an <a> tag
tag.MergeAttribute("class","anchorstyle");
tag.MergeAttribute("href", hrefValue);
tag.InnerHtml.Append(" "+ innerHtml + " ");
using (var sw=new System.IO.StringWriter())
{
tag.WriteTo(sw, System.Text.Encodings.Web.HtmlEncoder.Default);
return sw.ToString();
}
}
}
}
在“Models”文件夹中添加一个新类“ShowPaging.cs”。
using HTMLHelpersApp.Common;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace HTMLHelpersApp.Models
{
public class ShowPaging
{
//validation for required, only numbers, allowed range-1 to 500
[Required(ErrorMessage="Value is Required!. Please enter value between 1 and 500.")]
[RegularExpression(@"^\d+$", ErrorMessage="Only positive numbers are allowed. Please enter value between 1 and 500.")]
[Range(1, 500, ErrorMessage="Please enter value between 1 and 500.")]
public int InputNumber { get; set; }
public List<string> DisplayResult { get; set; }
public PageInfo PageInfo;
}
}
添加一个新控制器:“HTMLHelperController”
右键单击控制器文件夹并在上下文菜单中选择控制器。
选择“MVCController-Empty”。
在“HTMLHelperController”中添加代码。
using HTMLHelpersApp.Common;
using HTMLHelpersApp.Models;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace HTMLHelpersApp.Controllers
{
public class HTMLHelperController : Controller
{
private const int PAGE_SIZE=10;
public IActionResult Number()
{
return View();
}
public IActionResult ShowPaging(ShowPaging model, int page=1, int inputNumber=1)
{
if (ModelState.IsValid)
{
var displayResult=new List<string>();
string message;
//set model.pageinfo
model.PageInfo=new PageInfo();
model.PageInfo.CurrentPage=page;
model.PageInfo.ItemsPerPage=PAGE_SIZE;
model.PageInfo.TotalItems=inputNumber;
//Set model.displayresult - numbers list
for (int count=model.PageInfo.PageStart; count <=model.PageInfo.PageEnd; count++)
{
message=count.ToString();
displayResult.Add(message.Trim());
}
model.DisplayResult=displayResult;
}
//return view model
return View(model);
}
}
}
在 Views 文件夹中创建一个新文件夹“HTMLHelper”,并创建一个新视图“Number.cshtml”。
在“Number.cshtml”中添加代码。
@model HTMLHelpersApp.Models.Number
<h4>Number</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="ShowPaging" method="get">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<input asp-for="InputNumber" class="form-control"/>
</div>
<div class="form-group">
<input type="submit" value="Submit" class="btn btn-primary" />
</div>
</form>
</div>
</div>
同样,创建一个新视图“ShowPaging.cshtml”。
@model HTMLHelpersApp.Models.ShowPaging
@using HTMLHelpersApp.Common
<link rel="stylesheet" href="~/css/anchorstyles.css"/>
<form>
<h4>Show Paging</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<dl class="row">
<dt class="col-sm-2">
<b>Number: </b> @Html.DisplayFor(model=> model.InputNumber)
</dt>
<dd>
<a asp-action="Number">Change Number</a>
</dd>
</dl>
<div>
@if (Model !=null && Model.DisplayResult !=null)
{
<ul>
@foreach (var item in Model.DisplayResult)
{
<li>@Html.Raw(item)</li>
}
</ul>
<div>
@Html.PageLinks(@Model.PageInfo, x=> Url.Action("ShowPaging",
new { page=x.ToString(), inputNumber=@Model.InputNumber }))
</div>
}
</div>
</form>
解决方案资源管理器如下所示:
在“startup.cs”中配置默认控制器和操作。
编译并运行应用程序,输入数字 35。
点击提交。
你会在底部看到分页,每页显示10个数字,一共4页,且每页都一个链接。
*请认真填写需求信息,我们会在24小时内与您取得联系。