簡體   English   中英

ASP.NET MVC - 為元素列表更新 ViewModel

[英]ASP.NET MVC - Update ViewModel for List of elements

我有一個 MVC 視圖,可以查看成員列表的付款值和狀態,因此我在 ViewModel 中放入了memberPaymentData列表,該視圖的 ViewModel 如下:

public class MembersPaymentViewModel
{
    public List<MemberPaymentData> MembersPaymentData { get; set; }
}

MembersPaymentData Class:

public class MemberPaymentData
{
    public PaymentRule PaymentRule { get; set; }
    public float WorkedHoursOrDaysInCurrentMonth { get; set; }
    public float Payment { get; set; }
    public string PaymentStatus { get; set; };   
}

現在,管理員應該查看會員的付款,並將它們提交到數據庫,但在提交之前,他應該能夠編輯付款金額和付款狀態。 所以我把金額放在一個文本框中,把狀態放在一個下拉列表中。

在此處輸入圖像描述

我的問題是:當管理員提交表單時,我想在 model 中獲取列表或其他所有成員的付款值和狀態,我該如何實現?

  1. 您需要一個帶有 POST 方法的 controller 操作方法來接收請求正文。 您可以重用MembersPaymentViewModel class 或重新設計 model class 基於要傳遞給 Z5904C103F2C060E1 的輸入。

Controller

[HttpPost]
public ActionResult Payment(MembersPaymentViewModel model)
{
    // TO-DO
    return View(model);
}
  1. 在 Razor 視圖中,您需要創建一個<form> HTML 元素。 您的form元素應類似於以下內容:

Razor 查看

@using (Html.BeginForm("Payment", "Home", FormMethod.Post))
{
    <table style="width: 100%;">
        <thead>
            <tr>
                <td width="60">Day/Hours Worked</td>
                <td width="10">Payment</td>
                <td width="30">Status</td>
            </tr>
        </thead>

        <tbody>
            @{
                for (int i = 0; i < Model.MembersPaymentData.Count; i++)
                {
                    <tr style="padding-bottom: 10px;">
                        <td>
                            @Html.TextBoxFor(model => model.MembersPaymentData[i].WorkedHoursOrDaysInCurrentMonth
                                , new
                                {
                                    @readonly = "readonly"
                                })

                            <span>Hours</span>
                        </td>
                        <td>
                            @Html.TextBoxFor(model => model.MembersPaymentData[i].Payment)
                        </td>
                        <td>
                            @Html.TextBoxFor(model => model.MembersPaymentData[i].PaymentStatus)
                        </td>
                    </tr>
                }
            }
        </tbody>
    </table>

    <br />
    <button type="submit">Submit</button>
}

最重要的是<input> HTML 元素的name屬性必須與從 controller 操作接收到的請求正文相匹配。

演示

暫無
暫無

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

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