簡體   English   中英

如何將復選框的值傳遞給MVC5中的ActionResult?

[英]How to pass the values of the checkboxes to ActionResult in MVC5?

我有一個MVC5應用,在我看來,我有這樣的代碼:

<div class="form-group">
    @Html.LabelFor(model => model.CategoryID, "Category", htmlAttributes: new { @class = "control-label col-md-3" })
    <div class="col-md-9">
        @Html.DropDownList("CategoryID", null, "Please select a category", htmlAttributes: new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.CategoryID, "", new { @class = "text-danger" })
    </div>
</div>
<div id="subcatsform" class="form-group" style="visibility:hidden;">
    @Html.LabelFor(m => m.Subcategories, new { @class = "col-md-3 control-label" })
    <div id="subcats" class="col-md-9">

    </div>
</div>

然后,我有一個JavaScript代碼,該代碼根據先前選擇的類別填充子類別。 我通過以下代碼段實現它:

$(function () {
    $("#CategoryID").on("change", function () {
        var selected_option = $("#CategoryID option").filter(":selected").text();
        $("#subcats").empty();

        if (selected_option != "Please select a category") {
            $("#subcatsform").css("visibility", "visible");

            $.ajax({
                url: "/Home/GetSubcategories",
                dataType: "json",
                data: {
                    cid: $("#CategoryID").val(),
                },
                success: function (data) {
                    $.each(data, function (key, value) {
                        var checkbox = '<input type="checkbox" name="subcategory" value="' + value.id + '"> ' + value.value + '<br />';
                        $("#subcats").append(checkbox);
                    }); 
                }
            });
        }
        else
        {
            $("#subcatsform").css("visibility", "hidden");
        }
    });
});

關鍵是,直到一切正常為止,並且對於每個選定的類別,我都正確地獲得了子類別的列表,並創建了每個復選框的復選框,其中可以看到的name屬性等於subcategory ,而value屬性為等於子類別的實際ID。

接下來,我想獲取選中的復選框的value屬性(意味着選中的子類別),並將其傳遞給我的控制器。 我的ActionResult定義如下:

public async Task<ActionResult> RegisterBusiness(BusinessViewModel model)

BusinessViewModel內部,我有一個像這樣的屬性:

public virtual ICollection<Subcategory> Subcategories { get; set; }

最后,我的Subcategory模型的定義如下:

public class Subcategory
{
    public int SubcategoryID { get; set; }

    public string SubcategoryName { get; set; }

    public string SubcategoryDescription { get; set; }

    [ForeignKey("Category")]
    [Display(Name = "Category")]
    public int CategoryID { get; set; }

    public virtual Category Category { get; set; }

    [NotMapped]
    public bool IsSelected { get; set; }
}

如果有人可以幫助我將所選復選框的值傳遞到RegisterBusiness ActionResult中,然后將其存儲在我的ICollection<Subcategory> Subcategories屬性中,我將非常高興。

更改您的RegisterBusiness Action以采用名為subcategory的int數組

public async Task<ActionResult> RegisterBusiness(BusinessViewModel model, int[] subcategory)

數組將自動捕獲所選復選框的值。

現在,在回發時,從string[] subcategory ICollection<Subcategory>創建ICollection<Subcategory>並將其分配給Subcategories。

using System.Linq;
...
...
ICollection<Subcategory> Subcategories = subcategory.Select(x => new Subcategory { SubcategoryID = x}).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM