簡體   English   中英

CheckBox 用於在 Razor 中將模型重置為 null

[英]CheckBoxFor resetting the model to null in Razor

我正在迭代一個列表來設置多個Html.CheckBoxFor控件的值,但是在提交表單后,我在控制器參數中得到模型本身的空值。 例如,我是否應該用Html.HiddenFor替換Html.CheckBoxFor ,整個模型綁定工作並且FunctionViewModel正確傳遞給控制器​​。

模型

public class FunctionViewModel
{
    //... (this class is huge)
    public MeasuringViewModel MeasuringViewModel { get; set; }
}

模型使用的類

public class MeasuringViewModel
{
   //... (this class is also huge)
   public List<BatchItem> BatchToCancel { get; set; }
}

public class BatchItem
{
    public bool IsCancel { get; set; }
    public VMeasuringService VMeasuringService { get; set; }

    public BatchItem(VMeasuringService vMeasuringService)
    {
        IsCancel = false;
        VMeasuringService = vMeasuringService;
    }
}   

控制器

[HttpPost]
public ActionResult CancelBatch(FunctionViewModel viewModel)
{
    // viewModel is null should I use CheckBoxFor

    return View();
}

形式

@using (Html.BeginForm("CancelBatch", "Services", FormMethod.Post, new { Area = "Functions", @id = "cancelForm" }))
{
    for(int i = 0; i < Model.MeasuringViewModel.BatchToCancel.Count; i++)
    {
        @Html.CheckBoxFor(m => m.MeasuringViewModel.BatchToCancel[i].IsCancel)
    }

    <input type="submit" id="btSubmit" title="Post" alt="Post" value="Post" />
}

那么,它有什么問題呢?

您得到 null 是因為沒有與您的模型屬性匹配的控件 ID,通過在瀏覽器中檢查您的 html 來檢查 Razor 生成的控件 ID 是否與您的模型屬性匹配?

其次,在這種情況下,您無法為控件提供特定的 id,那么您可以使用 FormCollection 在控制器操作中獲取控件值,如下所示:

[HttpPost]
public ActionResult CancelBatch(FormCollection fc)
{
    // viewModel is null should I use CheckBoxFor

    return View();
}

暫無
暫無

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

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