1

現在、システムには、html 入力のリストと作成ボタンを表示するリスト ビューがあります。入力の行ごとに顧客返品アイテムを作成したいのですが、とても複雑です。私は次のことを試しましたが、エラーが発生しました:

"オブジェクト参照がオブジェクト インスタンスに設定されていません。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

ソース エラー:

CustomerReturnItem customerreturnitem = new CustomerReturnItem();
customerreturnitem = List1[count];
customerreturnitem.CustomerReturnId = CustomerReturnId;
customerreturnitem.ItemId = PassClass.ItemId[count];"

これは私の投稿アクションです:

    HttpPost]
            public ActionResult Action4( List<CustomerReturnItem> List1)
            {

                CustomerReturn customerreturn = new CustomerReturn();
                UpdateModel(customerreturn);
                customerreturn.TransactionId = PassClass.TransactionId;
                customerreturn.CustomerId = PassClass.CustomerId;
                customerreturn.DateOfCustomerReturn = System.DateTime.Now;

                db.SaveChanges();
                int CustomerReturnId = customerreturn.CustomerReturnId;
                if (ModelState.IsValid)
                {
                    for (int count = 0; count < PassClass.ItemCount; count++)
                    {
                        CustomerReturnItem customerreturnitem = new CustomerReturnItem();

                        customerreturnitem = List1[count];
                        customerreturnitem.CustomerReturnId = CustomerReturnId;
                        customerreturnitem.ItemId = PassClass.ItemId[count];
                        UpdateModel(customerreturnitem);
                        db.SaveChanges();


                    }
                }

                return RedirectToAction("Action5");
            }

私の見解

@model BBTprogram.Models.CustomerReturnItem

@{
    ViewBag.Title = "Action4";
}

<h2>Action4</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)



        <table>
        <tr>
        <th>
        Item
        </th>
        <th>
        Quantity Baught
        </th>       

        <th>
         <div class="editor-label">
            @Html.LabelFor(model => model.CustomerReturnQuantity)
        </div>
        </th>
        <th>
        <div class="editor-label">
            @Html.LabelFor(model => model.CustomerReasonForReturn)
        </div>
        </th>
        <th>
         <div class="editor-label">
            @Html.LabelFor(model => model.Resellable)
        </div>
        </th>
         </tr>
         @for (int i = 0; i < ViewBag.CountInfo; i++)
         {

        <tr>
        <td>
        <div>
        @ViewBag.ItemInfo[i]
        </div>
        </td>
        <td>
        <div>
        @ViewBag.QuantityInfo[i]
        </div>
        </td>

        <td>

        <div class="editor-field">
            @Html.EditorFor(model => model.CustomerReturnQuantity)
            @Html.ValidationMessageFor(model => model.CustomerReturnQuantity)
        </div>
        </td>
        <td>

        <div class="editor-field">
            @Html.EditorFor(model => model.CustomerReasonForReturn)
            @Html.ValidationMessageFor(model => model.CustomerReasonForReturn)
        </div>
        </td>
        <td>

        <div class="editor-field">
            @Html.EditorFor(model => model.Resellable)
            @Html.ValidationMessageFor(model => model.Resellable)
        </div>
        </td>
        </tr>
         }
        </table>
        <p>
            <input type="submit" value="Create" />
        </p>

}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

これは私のモデルです:

namespace BBTprogram.Models
{
    public class CustomerReturnItem
    {
        //Primary Key
        [Key]
        [ScaffoldColumn(false)]
        [Required]
        public int CustomerReturnItemId { get; set; }
        // Foreign Key
        public int CustomerReturnId { get; set; }
        public int ItemId { get; set; }
        //Other
        [DisplayName("Quantity of returned items")]
        [Required(ErrorMessage = "Returned quantity of item is required")]
        [Range(1, 200,
        ErrorMessage = "Returned quantity of item must be between 1 and 200")]
        public int CustomerReturnQuantity { get; set; }

        [DisplayName("Reason for returns")]
        public string CustomerReasonForReturn { get; set; }

        [DisplayName("Resellable?")]
        [Required(ErrorMessage = "Resellable is required")]
        public bool Resellable { get; set; }


    }
}
4

1 に答える 1

0

あなたのビューは1つだけをレンダリングしているようですCustomerReturnItem:

@model BBTprogram.Models.CustomerReturnItem

複数形でない:List<BBTprogram.Models.CustomerReturnItem>

デフォルトでは、現在のモデルHtml.BeginFormに送信されます。ActionResultあなたの場合CustomerReturnItem。しかし、あなたの ActionResult はList<CustomerReturnItem>

次のように変更してみてください。

[HttpPost]
public ActionResult Action4(CustomerReturnItem model)
            {
//**Your code here

}
于 2013-09-06T11:32:31.957 に答える