久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

ASP.NET MVC 3 CheckBoxList 的使用

 ThinkTank_引擎 2014-03-05
    

在以前的 ASP.NET MVC 中可以直接使用 CheckBoxList,,但后來不知道什么原因在 MVC 中移除了 CheckBoxList,所以默認(rèn)情況下 ASP.NET MVC 3 中是沒有 CheckBoxList 的,,所以我們不能直接使用 @Html.CheckBoxList,。今天我們通過自己動手來實現(xiàn) ASP.NET MVC 3 中的 CheckBoxList 功能。

首先,,讓我們看看我例子中兩個表之間的關(guān)系,,如下圖:

ZTag 表中保存的是文章分類,ZArticle 表中 Tag 字段為文章分類,,為"1,3,4"這種類型,,因為一篇文章可能屬于好幾種分類,如它同時屬于 jQuery,、CSS等,。

直接給出 CheckBoxList 擴(kuò)展的實現(xiàn),如下:

public static MvcHtmlString CheckBoxList(this HtmlHelper helper,  
    string name, IEnumerable<SelectListItem> items) 
{ 
    var str = new StringBuilder(); 
    str.Append(@"<div class=""checkboxlist"">"); 
 
    foreach (var item in items) 
    { 
        str.Append(@"<div class=""list""><input type=""checkbox"" name="""); 
        str.Append(name); 
        str.Append("\" value=\""); 
        str.Append(item.Value); 
        str.Append("\""); 
 
        if (item.Selected) 
            str.Append(@" checked=""chekced"""); 
 
        str.Append(" />"); 
        str.Append(item.Text); 
        str.Append("</div>"); 
    } 
 
    str.Append("</div>"); 
 
    return MvcHtmlString.Create(str.ToString()); 
}

關(guān)于擴(kuò)展 ASP.NET MVC HtmlHelper 類在 ASP.NET MVC 3 分頁這篇文章中就已經(jīng)使用過了,,并不難理解,。其中我們使用到了 ASP.NET MVC 3 中自帶的類 SelectListItem ,接下來完成 IEnumerable<SelectListItem> 初始化:

public static IEnumerable<SelectListItem> GetTags 
    (ZArticle article, IEnumerable<ZTag> tags) 
{ 
    var result = new List<SelectListItem>(); 
 
    foreach (var tag in tags) 
    { 
        var item = new SelectListItem 
        { 
            Text = tag.Name, 
            Value = tag.ID.ToString(), 
            Selected = article.Tag.Split(',').Contains(tag.ID.ToString()) 
        }; 
 
        result.Add(item); 
    } 
 
    return result; 
}

我將方法放在了 Common 類中,,方法分別傳遞了 ZArticle 對象和 IEnumberable<ZTag> 對象,,目的是遍歷 IEnumerable<ZTag> 來初始化 IEnumerable<SelectListItem> 對象,以便將 ZTag 表字段分別輸出為 checkbox,。最后只需要調(diào)用 GetTags() 方法,,如在文章編輯 Action 中調(diào)用如下:

public ActionResult Edit(string id) 
{ 
    var article = db.Articles.Single(a => a.UrlName == id); 
 
    var tags = db.Tags.OrderByDescending(m => m.ID); 
    var tag = Common.GetTags(article, tags); 
    ViewBag.Tags = tag; 
 
    return View(article); 
}

最后在 View 中調(diào)用如下:

@Html.CheckBoxList("tag", (IEnumerable<SelectListItem>)ViewBag.Tags)

結(jié)果如下圖所示:

ASP.NET MVC 中我們要記住 Don't Do IT Yourself 原則,獲取 CheckBoxList 選中值非常簡單,,接收選中值方法如下:

public ActionResult Edit(string id, string s,  
            ZArticle article,string[] tag) 
{ 
    article.UrlName = article.UrlName; 
    var model = db.Articles.Single(m => m.UrlName == id); 
    model.Tag = string.Join(",", tag);  //文章所屬類別 
    return View(model); 
}

tag 即為我們調(diào)用 @Html.CheckBoxList 時使用的 "tag",,也就是 CheckBox 的"name" 值,tag 即為 CheckBoxList 的選中值,,最后使用 Join 方法將它轉(zhuǎn)換為字符串,。如下圖:

到這里我們就實現(xiàn)了 ASP.NET MVC 3 中 CheckBoxList 的輸出,并成功獲取到 CheckBoxList 選中值,,希望對在使用 ASP.NET MVC 3 但不知道如何使用 CheckBoxList 的朋友能帶來一點幫助,。

作者:東奎 發(fā)布時間:2011年06月18日
原文:ASP.NET MVC 3 CheckBoxList 的使用
版權(quán)所有,,轉(zhuǎn)載時必須以鏈接形式注明作者和原出處并保留本聲明

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多