亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

復雜類型的視圖模型傳遞給控制器??時為 null

復雜類型的視圖模型傳遞給控制器??時為 null

C#
慕仙森 2023-08-20 11:07:47
我正在嘗試將具有復雜類型的視圖模型傳遞給我的控制器。我已經從頭到尾研究了這個主題的所有內容,但我仍然感到困惑。問題:當我單擊提交按鈕時,視圖模型被傳入,但 MacroInfo 屬性列表為空。更新索引視圖模型public class UpdateIndexViewModel{    //This view model will become larger later    public List<MacroInfo> MacrosToUpdate { get; set; }}宏信息public class MacroInfo{    public bool IsSelected { get; set; }    public string FullPath { get; set; }    public string Id { get; set; }    public DateTime CreatedAt { get; set; }}   控制器動作[HttpPost]public ActionResult Submit(UpdateIndexViewModel updateIndexViewModel){    //updateIndexViewModel.MacrosToUpdate is null ??}索引視圖@model EplanInterface.Core.ViewModels.UpdateIndexViewModel@using (Html.BeginForm("Submit", "Update", FormMethod.Post)){    <table style="width:100%" , class="table-bordered">        <thead>            <tr>                <th>#</th>                <th>Macro Path</th>                <th>Created At</th>                <th>Update</th>            </tr>        </thead>        @for (int i = 1; i < Model.MacrosToUpdate.Count; i++)        {            <tr>                <td>@Html.TextBoxFor(m =>Model.MacrosToUpdate[i].FullPath)</td>                <td>@Html.TextBoxFor(m => Model.MacrosToUpdate[i].CreatedAt)</td>                <td>@Html.CheckBoxFor(b => Model.MacrosToUpdate[i].IsSelected)</td>            </tr>        }    </table>    <input type="submit" class="btn btn-primary" value="Submit"/>}我嘗試過的我嘗試更改傳入的控制器操作屬性List<MacroInfo> macrosToUpdate,但執行此操作時該屬性仍然為空。Chrome 網絡檢查最后的評論我不確定是否需要使用 AJAX post 來執行此操作,或者我的變量名稱格式是否正確。我很確定這是一個我不理解的具有約束力的問題。如果有人能指出我正確的方向,我將非常感激。
查看完整描述

1 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

你的模板的這一部分有點錯誤。


@for (int i = 1; i < Model.MacrosToUpdate.Count; i++)

{

    <tr>

        <td>@Html.TextBoxFor(m =>Model.MacrosToUpdate[i].FullPath)</td>

        <td>@Html.TextBoxFor(m => Model.MacrosToUpdate[i].CreatedAt)</td>

        <td>@Html.CheckBoxFor(b => Model.MacrosToUpdate[i].IsSelected)</td>

    </tr>

}

請更改以下內容并重試。


@for (int i = 0; i < Model.MacrosToUpdate.Count; 

{

        <tr>

            <td>@i</td>

            <td>@Html.TextBoxFor(m => m.MacrosToUpdate[i].FullPath)</td>

            <td>@Html.TextBoxFor(m => m.MacrosToUpdate[i].CreatedAt)</td>

            <td>@Html.CheckBoxFor(b => b.MacrosToUpdate[i].IsSelected)</td>

        </tr>

 }

首先,您以 1 開始循環,這是根本原因。由于缺少第零個索引,模型綁定器無法正確綁定列表。


查看完整回答
反對 回復 2023-08-20
  • 1 回答
  • 0 關注
  • 150 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號