亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ASP.NET Core中如何利用多種方式給Action傳參

 更新時(shí)間:2020年12月15日 10:16:17   作者:碼農(nóng)讀書  
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何利用多種方式給Action傳參的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

ASP.NET Core 是一個(gè)跨平臺(tái),開源的,輕量級(jí),高性能 并且 高度模塊化的web框架。在 ASP.NET Core MVC 中有很多種方式可以給 Action 方法傳遞參數(shù),比如說:url方式,querystring方式,request header,request body,form 等等。本篇就和大家一起討論下如何使用這些方式,并且用代碼去一一驗(yàn)證。

創(chuàng)建 AuthorRepository 類

在這個(gè)例子中我會(huì)使用一個(gè) Repository 類,然后在 Controller 下的 Action 方法調(diào)用這個(gè) Repository 來實(shí)現(xiàn)基本的 CURD 操作,首先我們聲明一個(gè) Author 類,代碼如下:

 public class Author
 {
  public int Id { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
 }

AuthorRepository 類提供了如下三個(gè)方法。

  • GetAuthor 用于從泛型集合中獲取 Author 實(shí)體
  • Save 用于將 Author 保存到底層的 泛型集合中
  • GetAuthors 用于分頁獲取 泛型集合中的數(shù)據(jù)

具體代碼如下:

 public class AuthorRepository
 {
  List<Author> authors = new List<Author>()
  {
   new Author
   {
    Id = 1,
    FirstName = "Joydip",
    LastName = "Kanjilal"
   },
   new Author
   {
    Id = 2,
    FirstName = "Steve",
    LastName = "Smith"
   }
  };
  public Author GetAuthor(int id)
  {
   return authors.FirstOrDefault(a => a.Id == id);
  }
  public List<Author> GetAuthors(int pageNumber = 1)
  {
   int pageSize = 10;
   int skip = pageSize * (pageNumber - 1);
   if (authors.Count < pageSize)
    pageSize = authors.Count;
   return authors
    .Skip(skip)
    .Take(pageSize).ToList();
  }
  public bool Save(Author author)
  {
   var result = authors.Where(a => a.Id == author.Id);
   if (result != null)
   {
    if (result.Count() == 0)
    {
     authors.Add(author);
     return true;
    }
   }
   return false;
  }
 }

通過 url 方式

最簡單粗暴的給 Action 傳參就是通過 url 方式,下面的代碼片段展示了如何通過 url 進(jìn)行傳參。

[HttpGet]
[Route("Default/GetAuthor/{authorId:int}")]
public IActionResult GetAuthor(int authorId)
{
  var data = authorRepository.GetAuthor(authorId);
  return View(data);
}

輸入的 url 格式如下:

GET: http://localhost:8061/Default/GetAuthor/1

通過 querystring 方式

這種方式的做法就是采用 ? 的模式,好處在于可以不修改 url 的結(jié)構(gòu)信息,所以它具有向后兼容性,考慮下面的代碼片段,它是如何使用 querystring 方式向 action 傳參的?

[HttpGet]
[Route("Default/GetAuthors/{pageNumber:int}")]
public IActionResult GetAuthors([FromQuery
(Name = "pageNumber")] int pageNumber = 1)
{
  var data = authorRepository.GetAuthors(pageNumber);
  return Ok(data);
}

輸入的 url 格式如下:

GET: http://localhost:8061/Default/GetAuthors?pageNumber=1

值得注意的是 Action 方法的 pageNumber 參數(shù)是可選的,意味著如果不傳入的話,默認(rèn)按照 1 來計(jì)算,舉個(gè)例子,如果底層的 AuthorList 有 100 條記錄 同時(shí)當(dāng)前傳遞的 page =3,那么該方法將會(huì)返回 31-40 這10條記錄,這里的每頁返回多少條是采用硬編碼的,比如我這里定義的是10,大家可以根據(jù)自己的情況設(shè)置合理的值。

通過 request header 方式

大多情況下,在傳遞身份信息,隱私數(shù)據(jù) 等場景下會(huì)用到這種方式,比如說 Basic 驗(yàn)證,如下圖:

又或者是將 信用卡 塞入到 header 中,下面的代碼展示了如何在 Action 中接收 header 中的信用卡號(hào)碼。

[HttpGet]
[Route("Default/IsCreditCardValid/{creditCardNumber}")]
public IActionResult IsCreditCardValid([FromHeader] string creditCardNumber)
{
  string regexExpression =
  "^(?:(?<visa>4[0-9]{12}(?:[0-9]{3})?)|" +
  "(?<mastercard>5[1-5][0-9]{14})|" +
  "(?<amex>3[47][0-9]{13})|)$";
  Regex regex = new Regex(regexExpression);
  var match = regex.Match(creditCardNumber);
  return Ok(match.Success);
}

為了簡化目的, IsCreditCardValid 方法只能驗(yàn)證 Visa,MasterCard,Amex 這三種類型的信用卡,如果還想擴(kuò)展到其他信用卡的話,你可以自己修改一下,因?yàn)樾庞每ㄌ?hào)碼一般需要被安全的傳遞,所以采用這種方式還是很不錯(cuò)的選擇,下面展示了如何通過 PostMan 將 信用卡號(hào)碼 塞入到 header 中。

使用 request body 方式

request body 常常用于執(zhí)行 insert 或者 update 操作,也是我們平時(shí)在web開發(fā)中用的最多的一種參數(shù)傳遞方式,下面的代碼片段展示了如何使用在 Action 中接收 request body。

[HttpPost]
[Route("Default/Insert")]
public IActionResult Insert([FromBody] Author author)
{
  return Ok(authorRepository.Save(author));
}

接下來看看前端如何 post 數(shù)據(jù)到 后端來,這里繼續(xù)使用 Postman 來進(jìn)行測試。

DefaultController 的完整代碼

為了能夠看到全貌,下面用 DefaultController 羅列了本篇聊到了所有傳值方式。

 public class DefaultController : Controller
  {
    private readonly AuthorRepository authorRepository =
    new AuthorRepository();
    [HttpGet]
    [Route("Default/GetAuthor/{authorId:int}")]
    public IActionResult GetAuthor(int authorId)
    {
      var data = authorRepository.GetAuthor(authorId);
      return Ok(data);
    }
    [HttpGet]
    [Route("Default/GetAuthors/{pageNumber:int}")]
    public IActionResult GetAuthors([FromQuery
    (Name = "pageNumber")] int pageNumber = 1)
    {
      var data = authorRepository.GetAuthors(pageNumber);
      return Ok(data);
    }
    [HttpGet]
    [Route("Default/IsCreditCardValid/{creditCardNumber}")]
    public IActionResult IsCreditCardValid
    ([FromHeader] string creditCardNumber)
    {
      string regexExpression =
      "^(?:(?<visa>4[0-9]{12}(?:[0-9]{3})?)|" +
      "(?<mastercard>5[1-5][0-9]{14})|" +
      "(?<amex>3[47][0-9]{13})|)$";
      Regex regex = new Regex(regexExpression);
      var match = regex.Match(creditCardNumber);
      return Ok(match.Success);
    }
    [HttpPost]
    [Route("Default/Insert")]
    public IActionResult Insert([FromBody] Author author)
    {
      return Ok(authorRepository.Save(author));
    }
  }

最后,你也可以采用 form 的形式給 Action 傳遞參數(shù),不過 form 的場景更多的用于 文件上傳,要這么做的話,可以利用 IFormFile 去搞定。

到此這篇關(guān)于ASP.NET Core中如何利用多種方式給Action傳參的文章就介紹到這了,更多相關(guān)ASP.NET Core用多種方式給Action傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

譯文鏈接:https://www.infoworld.com/article/3568209/how-to-pass-parameters-to-action-methods-in-asp-net-core-mvc.html

相關(guān)文章

  • .net core webapi通過中間件獲取請求和響應(yīng)內(nèi)容的方法

    .net core webapi通過中間件獲取請求和響應(yīng)內(nèi)容的方法

    這篇文章主要介紹了.net core webapi通過中間件獲取請求和響應(yīng)內(nèi)容的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 淺談對Jquery+JSON+WebService的使用小結(jié)

    淺談對Jquery+JSON+WebService的使用小結(jié)

    本篇文章介紹了對Jquery+JSON+WebService的使用小結(jié)。需要的朋友參考下
    2013-04-04
  • .NET Core中使用HttpClient的正確姿勢

    .NET Core中使用HttpClient的正確姿勢

    使用HttpClient可以很方便的請求Web API,下面這篇文章主要給大家介紹了關(guān)于.NET Core中使用HttpClient的正確姿勢,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Asp.Net在線預(yù)覽Word文檔的解決方案與思路詳解

    Asp.Net在線預(yù)覽Word文檔的解決方案與思路詳解

    這篇文章主要介紹了Asp.Net在線預(yù)覽Word文檔的解決方案與思路,大致思路是先將Word文檔轉(zhuǎn)換Html,再預(yù)覽Html,需要注意電腦安裝Office,需要的朋友可以參考下
    2022-04-04
  • MVC使用MvcPager實(shí)現(xiàn)分頁效果

    MVC使用MvcPager實(shí)現(xiàn)分頁效果

    這篇文章主要為大家詳細(xì)介紹了MVC使用MvcPager實(shí)現(xiàn)分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解.Net單元測試方法

    詳解.Net單元測試方法

    本篇文章給大家詳細(xì)講述了.NET單元測試的詳細(xì)方法和步驟,有需要的朋友參考學(xué)習(xí)下。
    2018-07-07
  • .net5?使用Hangfire的過程記錄

    .net5?使用Hangfire的過程記錄

    最近項(xiàng)目遇到這樣的需求,需要實(shí)現(xiàn)根據(jù)領(lǐng)取時(shí)間改變優(yōu)惠券狀態(tài)的功能,本文給大家分享.net5?使用Hangfire的過程記錄,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率 實(shí)例代碼

    VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率 實(shí)例代碼

    這篇文章介紹了VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率 實(shí)例代碼,有需要的朋友可以參考一下
    2013-07-07
  • repeater做刪除前彈窗詢問實(shí)例

    repeater做刪除前彈窗詢問實(shí)例

    這篇文章介紹了repeater做刪除前彈窗詢問實(shí)例,有需要的朋友可以參考一下
    2013-10-10
  • 詳解asp.net core重新加載應(yīng)用配置

    詳解asp.net core重新加載應(yīng)用配置

    這篇文章主要介紹了asp.net core重新加載應(yīng)用配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論