1

ドロップダウンリストの値をコントローラーに渡して、値をペイコードのリストに追加しようとしていますが、「値を null にすることはできません」というメッセージが引き続き表示されます。エラー。ペイコード リストには多くの項目があります。ここで何がnullなのか間違っているのかわかりません...

内部例外

Value cannot be null.
Parameter name: source

見る

        <!-- products input-->
        <div class="control-group col-lg-6">
            <label class="control-label">Product</label>
            <div class="controls">
                @using (Ajax.BeginForm("AddPayCode", "Referral",
    new AjaxOptions()
    {
        HttpMethod = "POST",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "PayCodes",
        Url = Url.Action("AddPayCode", "Referral")
    }))
                {
                    @Html.ValidationSummary()

                    @Html.DropDownListFor(model => model.SelectedPayCode, new SelectList(Model.PayCodes.ToList(), "Id", "Description"), "- Select -")
                    <input type="submit" value="Add" />
                }
            </div>
        </div>

コントローラ

[HttpPost]
public void AddPayCode(ReferralModel model)
{
    var test = model.SelectedPayCode;
    //TODO: Add to model.Referral.PayCodes list and return list of selected items
}

モデル

public class ReferralModel
{
    public Customer Customer { get; set; }
    public Employee Employee { get; set; }
    public List<PayCode> PayCodes { get; set; }
    public int SelectedPayCode { get; set; }

    public Referral Referral { get; set; }
}

ドメイン オブジェクト

public class Referral
{
    [Key]
    public int Id { get; set; }
    public int CustomerId { get; set; }
    public int EmployeeId { get; set; }
    public decimal Total { get; set; }

    public virtual List<PayCode> PayCodes { get; set; }
    public virtual Customer Customer { get; set; }
    public virtual Employee Employee { get; set; }
}

目的 :

  • ユーザーはドロップダウンからペイコードを選択し、[追加] をクリックします

  • 紹介PayCodesリストに追加されました

  • コントローラーは、選択されたペイコードのリストをビューに返します (まだ実装されていません)

4

1 に答える 1

1

問題は、コントローラーにドロップダウン リストのプロパティがないことでした。

[HttpPost]
public void AddPayCode(ReferralModel model, ** string SelectedPayCode ** <-- missing)
{
    var test = SelectedPayCode;
    //TODO: Add to model.Referral.PayCodes list and return list of selected items
}
于 2013-11-04T04:08:33.033 に答える