簡體   English   中英

動態模型列表在回發時不綁定

[英]Dynamic Model list not binding on post back

我是MVC的新手,正在嘗試弄清楚如何綁定動態列表。

我按照本示例和其他示例中的說明進行操作,以創建我的表。 新項目已成功添加到表中。 但是,在回發時,只有最初添加到列表中的默認項目可用,沒有新項目。

這些是我的模型:

 public class ItemModel {
    public int ID { get; set; }

    [Display(Name = "Name")]
    public string Name { get; set; }

    [Display(Name = "Description")]
    public string Description { get; set; }

 }

public class MainModel{
     public List<ItemModel> Items { get; set; }

    public MainModel(){
        Items   = new List<ItemModel>()
    }
 }

我的觀點:

<table id="list">
            <thead>
                <tr>
                    <th style="width: 150px;">
                        @Html.DisplayNameFor(model => model.Items[0].Name)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.Items[0].Description)
                    </th>
                    <th>
                        Delete
                    </th>
                </tr>
            </thead>
            <tbody>
                @Html.Partial("Item", Model)
            </tbody>
        </table>

部分視圖:

@for (var i = 0; i < Model.Items.Count; i++) {
<tr>
    <td>
         @Html.TextBoxFor(model => model.Items[i].Name)
    </td>
    <td>
        @Html.TextBoxFor(model => model.Items[i].Description)
    </td>
    <td>
        <button class="btn" type="button" data-id="@Model.Items[i].ID" value="Delete"/>
    </td>
</tr>
}

我正在使用Ajax Post將新項目添加到表中:

$('.add').click(function () {
        var action = "/Project/Add";
        $.ajax({
            url: action,
            cache: false,
            success: function (result) {
                $("#list").find("tbody").empty().append($(result));
            }
        });
    });

控制器動作:

public ActionResult Add() {
        ItemModel item = new ItemModel();
        try {
            item.ID =       ((MainModel)Session["MainModel"]).Items.LastOrDefault().ID + 1;
            ((MainModel)Session["MainModel"]).Items.Add(item);
        } catch (Exception) {
            return Json(null);
        }
        return PartialView("Item", Session["MainModel"]);
    }

可以告訴我我在做什么錯嗎?

謝謝。

可能是每次調用public ActionResult Add()時都在創建一個新的空項目。 然后設置其ID,然后將其添加到會話模型中。 名稱和描述屬性未設置。

要添加添加到頁面中的項目,必須將數據回發到Add()方法中的參數-否則,沒有數據可添加到項目中。

同樣,傳遞數據的最后一部分:

return PartialView("Item", Session["MainModel"]);

最好將其強制轉換為MainModel:

(MainModel)Session["MainModel"]

暫無
暫無

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

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