【问题标题】:c# ASP.NET MVC cannot pass model's collection field to controller [duplicate]c#ASP.NET MVC无法将模型的集合字段传递给控制器​​[重复]
【发布时间】:2016-02-16 17:44:36
【问题描述】:

我有一个来自 EF 的课程。

public partial class Customer
{
    public Customer()
    {
        this.Customer_CustomerSpecialConcern = new HashSet<Customer_CustomerSpecialConcern>();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Email { get; set; }
    public string Mobile { get; set; }
    public virtual ICollection<Customer_CustomerSpecialConcern> Customer_CustomerSpecialConcern { get; set; }
}

当我从控制器传递模型以查看一切正常时(可以访问 Customer_CustomerSpecialConcern 值)。 问题是当我将模型回发到控制器以保存更改时,属性Customer_CustomerSpecialConcern 为空。

这是我在视图中使用它的方式。

@foreach (var ccsc in Model.Customer_CustomerSpecialConcern)
{
    <div class="form-group fields-container col-md-3">
        <label class="field-label control-label col-md-10" for="">@ccsc.CustomerSpecialConcern.Title</label>
        <div class="col-md-1 field-input">
            @Html.EditorFor(model => ccsc.Value)
            @Html.HiddenFor(model => ccsc.Value)
        </div>
    </div>
}

请,我需要帮助才能将此集合属性的值传递给控制器​​。谢谢。

更新 - Customer_CustomerSpecialConcern 类详细信息

public partial class Customer_CustomerSpecialConcern 
{ 
    public int Id { get; set; } 
    public int Customer_Id { get; set; } 
    public int CustomerSpecialConcern_Id { get; set; } 
    public bool Value { get; set; } 
    public virtual Customer Customer { get; set; } 
    public virtual CustomerSpecialConcern CustomerSpecialConcern { get; set; } 
}

【问题讨论】:

    标签: c# asp.net asp.net-mvc entity-framework razor


    【解决方案1】:

    请试试这个,

    @for (int i = 0; i < Model.Customer_CustomerSpecialConcern.Count(); i++)
    {
        <div class="form-group fields-container col-md-3">
            <label class="field-label control-label col-md-10" for="">@Model.CustomerSpecialConcern[i].Title</label>
            <div class="col-md-1 field-input">
                @Html.EditorFor(model => model.Customer_CustomerSpecialConcern[i].Value)
                @Html.HiddenFor(model => model.Customer_CustomerSpecialConcern[i].Value)
            </div>
        </div>
    }
    

    查看this 文章。

    我试过你的例子,它看起来是这样的

    public ActionResult Index()
            {
                var customer = new Customer
                {
                    Name = "Name",
                    Surname = "Surname",
                    Email = "email@email.com",
                    Mobile = "mobile...",
                    Customer_CustomerSpecialConcern = new List<Customer_CustomerSpecialConcern>
                    {
                        new Customer_CustomerSpecialConcern
                        {
                            Value = true
                        },
                        new Customer_CustomerSpecialConcern
                        {
                            Value = true
                        }
                    }
                };
    
                return View(customer);
            }
    

    查看:

    @model WebApplication1.Models.Customer
    
    @{
        ViewBag.Title = "Customer";
        var customer_CustomerSpecialConcern = Model.Customer_CustomerSpecialConcern.ToList();
    }
    
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        for (int i = 0; i < Model.Customer_CustomerSpecialConcern.Count(); i++)
        {
            <div class="form-group fields-container col-md-3">
                <label class="field-label control-label col-md-10" for=""></label>
                <div class="col-md-1 field-input">
                    @Html.CheckBoxFor(model => customer_CustomerSpecialConcern[i].Value)
                </div>
            </div>
        }
        <input type="submit" value="Save"/>
    }
    

    【讨论】:

    • 我试过了,但没有...
    • 你为什么对同一个字段使用 EditorFor 和 HiddenFor 助手?
    • 我试图获得价值,所以我尝试了一切
    • 能否提供 Customer_CustomerSpecialConcern 模型的代码?
    • @EdinMahmutovic 请尽可能避免对代码 sn-ps 进行截图,而是在帖子中添加代码 sn-p 本身。这将为您的答案增加更多价值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    相关资源
    最近更新 更多