欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

[水煮ASP.NETWebAPI2方法論](1-3)如何接收HTML表單請求

問題

在武定等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計制作定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè)公司,武定網(wǎng)站建設(shè)費用合理。

  我們想創(chuàng)建一個能夠處理 HTML表單的 ASP.NET Web API應(yīng)用程序(使用 application/x-www-form-urlencoded方式提交數(shù)據(jù))。

 

解決方案

  我們可以創(chuàng)建一個 Controller Action 接收一個 Moddel,Model 的結(jié)構(gòu)和準(zhǔn)備從HTML 表單提交的準(zhǔn)備處理的結(jié)構(gòu)相似,模型綁定依賴于 ASP.NET Web API 來處理。模型中的屬性名字和 HTTP 請求中要用的名字要匹配。

public HttpResponseMessage Post(RegistrationModel model)
{
    //忽略
}

 

  另外,我們可以使用System.Net.Http.Formatting.FormDataCollection作為 Action方法的唯一參數(shù)??蚣軐ㄟ^鍵值對集合的方式傳值,我們就可以自己處理我們想要的值。

public HttpResponseMessage Post(FormDataCollection form)
{
    //忽略
}

 

工作原理

  當(dāng)使用 ASP.NET Web API構(gòu)建 web應(yīng)用程序時,為了提升現(xiàn)有 Web應(yīng)用程序(MVC,Web Form,或者其他技術(shù))而使用Web API的時候,提交 form-URL-encoded數(shù)據(jù)是一種很常見的需求。

  ASP.NET Web API使用 MediaTypeFormatters從 HttpRequestMessage表單中提取數(shù)據(jù),并且,傳輸這些數(shù)據(jù)給相應(yīng)選擇的action來處理請求。第四章會詳細(xì)介紹模型綁定和格式化,在這里,我們僅僅接觸了直接與處理 HTML表單相關(guān)的概念。

   兩個現(xiàn)成的格式化程序能夠處理的格式:

  • FormUrlEncodedMediaTypeFormatter,用于綁定使用     application/x-www-form-urlencoded內(nèi)容類型的 FormDataCollection。

  • JQueryMvcFormUrlEncodedFormatter,也是使用同樣的內(nèi)容類型,也可以綁定到Model(DTO)

從設(shè)計角度來看,后面的應(yīng)該是前面的子類。

  使用FormDataCollection來代替我們action參數(shù),他不僅讓我們能夠訪問原始表單數(shù)據(jù),還通知了 ASP.NET Web API不執(zhí)行任何驗證。

  默認(rèn)情況,Web API僅僅讀請求體一次,當(dāng)使用模型綁定表單數(shù)據(jù)時,這種模式應(yīng)該封裝了所有的表單域。換句話說,不能在傳輸數(shù)據(jù)的時候,即使用請求體傳輸數(shù)據(jù),同時又使用 URL參數(shù)形式傳輸數(shù)據(jù),在這樣的情況下,還希望框架自動處理模型綁定。對于 MVC開發(fā)者這個情況就很痛苦,因為他們習(xí)慣了這樣的開發(fā)方式。不過,我們還是可以強(qiáng)制 Web API使用像 MVC樣式的參數(shù)綁定。這部分將在本書 4-4部分討論。

  如果你的表單處理的時二進(jìn)制數(shù)據(jù),例如,上傳文件。這時候,表單將被替換為 multipart/form-data的形式提交。ASP.NET Web API沒有提供任何內(nèi)建的MediaTypeFomatter來處理二進(jìn)制數(shù)據(jù)。不過,他還是很容易處理這種方式提交的表單。他是使用 MultipleFormDataStreamProvider來直接處理 HttpRequestMessage的內(nèi)容。如清單 1-7所示。盡管處理文件上傳超出了我們介紹的范圍,還是會在 4-11單獨討論。

清單1-7. 接收復(fù)雜請求的表單數(shù)據(jù)

public async Task Post()
{
    if (!Request.Content.IsMimeMultipartContent())
    {
        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable,
        "請求格式化失敗"));
    }
    var streamProvider = new MultipartFormDataStreamProvider("d:/uploads/");
    await Request.Content.ReadAsMultipartAsync(streamProvider);
    //訪問 FormDataCollection 的 實例 streamProvider.FormData
 }

注意在這一部分討論的功能不是 ASP.NET特有的,Web API 之外一樣可以用。不過,作為 ASP.NET Web 應(yīng)用程序的一部分來運行 Web API 的時候,我們通常還是要處理傳統(tǒng)的網(wǎng)頁表單。

 

代碼演示

清單1-8展示了使用簡單表單和JavaScript提交到 ASP.NET Web API的簡單網(wǎng)頁表單.

 

清單 1-8. 簡單的網(wǎng)頁表單

<form role="form" method="post" action="/api/form" enctype="application/x-www-form-urlencoded">
    <div class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" name="name" placeholder="Enter name">
    </div>
    <div class="form-group">
        <label for="email">Email</label>
        <input type="email" class="form-control" name="email" placeholder="Enter email">
    </div>
    <div class="radio">
        <label>           
            <input type="radio" name="gender" value="female" checked>Female
        </label>
    </div>
    <div class="radio">
        <label>            
            <input type="radio" name="gender" value="male">Male
        </label>
    </div>
    <button type="submit" class="btn btn-default">提交</button>
    <button id="postJS" class="btn btn-default">使用 JS 提交</button>
</form>
<script type="text/javascript"> $(
    function () { 
        $("#postJS").on("click", function () { 
        var data = { name: $("input[name='name']").val(), 
        email: $("input[name='email']").val(),
        gender: $("input[name='gender']:checked").val(), }; 
        $.ajax(
            { 
                data: data, 
                datatype: "html", 
                type: "POST", 
                url: "/api/user"
        }).done(function (res) {
            //處理 handler
        }); 
    });
});
</script>

 清單 1-9展示了可以處理清單1-8表單的兩個 ASP.NET Web API action。第一個是是使用相對傳統(tǒng)的方式,使用 FormDataCollection和手動提取數(shù)據(jù),然后在填充到服務(wù)器的模型里面。第二個依依賴與框架的自動模型綁定。

 

清單 1-9. Web API 控制器處理表單數(shù)據(jù)

public async Task Post()
{
    if (!Request.Content.IsMimeMultipartContent())
    {
        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable,
        "請求格式化失敗"));
    }
    var streamProvider = new MultipartFormDataStreamProvider("d:/uploads/");
    await Request.Content.ReadAsMultipartAsync(streamProvider);
    //訪問 FormDataCollection 的 實例 streamProvider.FormData
}

public class UserModel{
    public string Name { get; set; }
    public string Email { get; set; }
    public string Gender { get; set; }
}

public class FormController : ApiController{
    public HttpResponseMessage Post(FormDataCollection form)
    {
        var user = new UserModel        {
            Email = form["Email"],
            Name = form["Name"],
            Gender = form["Gender"]
        };
        //  處理用戶...       
        //  忽略    
     }
}

public class UserController : ApiController{
    public HttpResponseMessage Post(UserModel user)
    {
                //process user...        
                //rest omitted for brevity    
     }
}

分享名稱:[水煮ASP.NETWebAPI2方法論](1-3)如何接收HTML表單請求
本文地址:http://www.aaarwkj.com/article48/gipihp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、Google服務(wù)器托管、移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
国产激情av网站在线观看| 久久精品国产亚洲av品| 日韩欧美国产精品加勒比| 日韩精品福利片午夜免费| 最新手机免费黄色av网站| 日本高清av一区二区| 国产精品国产三级国产专播| 久久久这里只有精品99| 欧美另类精品一区二区三区| 自拍日韩亚洲一区在线| 午夜神马福利激情视频| 亚洲一区二区日韩在线| 欧美日韩在线不卡成人| 男女在线视频网站免费| 开心五月婷婷六月丁香| 一本久久综合亚洲鲁鲁五月天| 亚洲高清中文字幕一区二三区| 日本久久91跳蛋视频| 欧美欧美欧美欧美在线| 国产国语激情对白在线| 花花草草寻亲记在哪里免费看 | 一区二区在线日韩视频| 亚洲一本一道久久香蕉| 日本精品动漫一区二区三区| 午夜福利网午夜福利网| 国产女主播高清在线视频| 日本经典三级视频在线观看| 成人黄片免费在线播放| 欧美日韩亚洲国产极品 | 91伊人手机在线观看| 日本人妻精品在线观看| 91午夜福利国产在线观看| 日韩精品二区在线观看| 亚洲中文字幕少妇熟女美妇| 国产欧美日韩午夜激情| 国产传媒网约在线观看| 九九视频免费观看5| 欧美色精品人妻视频在线| 国产亚洲综合精品综合区| 国产白浆一区二区视频| 麻豆色视频在线观看免费|