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小時內與您取得聯系。