首頁 > 後端開發 > C++ > 如何在ASP.NET MVC中的視圖和控制器之間傳遞和檢索複選框選擇列表?

如何在ASP.NET MVC中的視圖和控制器之間傳遞和檢索複選框選擇列表?

Barbara Streisand
發布: 2025-01-31 17:41:11
原創
290 人瀏覽過

How to Pass and Retrieve a List of Checkbox Selections Between a View and Controller in ASP.NET MVC?

在 ASP.NET MVC 中傳遞和檢索視圖和控制器之間的複選框選擇列表

在 Web 開發中,我們經常會遇到需要在視圖中顯示複選框列表,允許用戶選擇某些複選框,然後將這些選擇提交回控制器進行處理的情況。但是,如果我們同時處理關聯項和非關聯項,則將這些選擇映射到模型可能會很困難。

問題:

Web 表單使用 HTML 輸入元素來表示表單字段,包括複選框。默認情況下,未選中的複選框不會將其值回傳到控制器。當我們想要在視圖模型中捕獲所有選定值(關聯和非關聯)時,這可能會導致問題。

解決方案:

為了克服此限制,我們可以採用依賴於強類型 HTML 幫助器的結構化方法。通過使用這些幫助器,我們可以確保正確的模型綁定,並結合為選中和未選中復選框自動發布值的優點。

創建視圖模型:

在上述場景中,我們假設用戶和項目之間存在多對一的關係。為了在視圖中表示這一點,我們可以定義如下視圖模型:

<code class="language-csharp">public class ItemViewModel
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsSelected { get; set; } // 指示此项目是否已选中
}</code>
登入後複製

填充視圖模型:

在視圖的 GET 操作方法中,我們可以使用所有項目(包括關聯和非關聯項目)填充視圖模型,並根據實際關聯相應地設置 IsSelected 屬性。

<code class="language-csharp">// GET 操作方法中的代码
var model = new ItemViewModel();
// ... 在此处填充模型 ...
return View(model);</code>
登入後複製

在視圖中顯示複選框:

在我們的視圖中,我們可以使用 Html 幫助器來生成複選框並顯示項目名稱:

<code class="language-html">// Razor 视图中的代码
@model ItemViewModel
@for (int i = 0; i < Model.Items.Count; i++)
{
    @Html.HiddenFor(m => m.Items[i].ID) // 隐藏输入以传递项目 ID
    @Html.CheckBoxFor(m => m.Items[i].IsSelected) // 用于选择项目的复选框
    @Html.LabelFor(m => m.Items[i].IsSelected, Model.Items[i].Name) // 复选框的标签
}</code>
登入後複製

在控制器中接收選擇:

在 POST 操作方法中,我們可以將表單字段綁定到我們的視圖模型,而 IsSelected 屬性將自動反映複選框的狀態(選中和未選中)。

<code class="language-csharp">// POST 操作方法中的代码
ItemViewModel model; // 将请求绑定到我们的视图模型
// ... 在此处处理选定的项目 ...</code>
登入後複製

通過這種方法,我們可以有效地傳輸和捕獲選定複選框的列表,而不管其先前的關聯狀態如何。

以上是如何在ASP.NET MVC中的視圖和控制器之間傳遞和檢索複選框選擇列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板