[英]Model is null on post back in ASP.NET MVC
我正在嘗試生成復選框列表並將所選項目發布到我的 controller 的發布方法,但我的視圖 model 是 null。
請參閱下面的代碼和幫助。
在另一個頁面上使用以下按鈕調用視圖 -
<button class="btn btn-primary" id="historicalrecords"
onclick="location.href='@Url.Action("HistoricalWorkSubmissions", "Main", new {id= @Model.MessageIdsCombined.FirstOrDefault()})'">View Historical Works</button>
Model WorkSubmissions.cs
:
public class HistoricalWorkSubmission
{
public string Society { get; set; }
public string Rsa { get; set; }
public DateTime ProcessingTime { get; set; }
public bool isSelected { get; set; }
}
public class HistoricalWorkSubmisssionViewModel
{
public List<HistoricalWorkSubmission> Submissions { get; set; }
}
MainController
中的獲取方法:
[HttpGet]
public async Task<ActionResult> HistoricalWorkSubmissions(string id)
{
WorkSearchViewModel workSearchViewModel = new WorkSearchViewModel
{
MessageId = id
};
var workSubmissions = await _swvManager.SearchAllWorkSubmissionsAsync(workSearchViewModel).ConfigureAwait(true);
return View("~/Views/Main/HistoricalWorkSubmissions.cshtml", workSubmissions);
}
HistoricalWorkSubmissions.cshtml
:
@model SWV.WorkPicture.UI.Models.HistoricalWorkSubmisssionViewModel
@{
ViewBag.Title = "HistoricalSubmissions";
}
<h2>HistoricalSubmissions</h2>
@using (Html.BeginForm("HistoricalWorkSubmissions", "Main", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken();
<fieldset>
<div>
<table class="table-bordered">
@*@foreach (var submission in Model.Submissions)*@
@for (int i=0; i < Model.Submissions.Count(); i++)
{
var bmiWorks = Model.Submissions[i].Society + Model.Submissions[i].Rsa + " " + Model.Submissions[i].ProcessingTime;
<tr>
<td>
@Html.CheckBoxFor(m => Model.Submissions[i].isSelected)
@Html.Label(bmiWorks)
@Html.HiddenFor(m => Model.Submissions[i])
</td>
</tr>
}
</table>
<input class="button btn-primary" type="submit" value="Save"/>
</div>
</fieldset>
}
最后發布方法:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> HistoricalWorkSubmissions(HistoricalWorkSubmisssionViewModel workSubmissions)
{
WorkSearchViewModel workSearchViewModel = new WorkSearchViewModel();
workSearchViewModel.SwvId = "5124cfb4-afe8-4783-ab97-b9fbaaf6737d";
var workPicturesx = await _swvManager.SearchAllWorkSubmissionsAsync(workSearchViewModel).ConfigureAwait(true);
return View("~/Views/Main/HistoricalWorks.cshtml");
}
abc
在調試器中的值為 null。 請幫忙。
確保帖子中的字段名稱與 model 匹配。 Label 不是問題,但CheckBoxFor
和HiddenFor
會以發布到服務器的形式生成 Html input
標簽。
@Html.CheckBoxFor(m => Model.Submissions[i].isSelected)
@Html.Label(bmiWorks)
@Html.HiddenFor(m => Model.Submissions[i].Society)
@Html.HiddenFor(m => Model.Submissions[i].Rsa)
@Html.HiddenFor(m => Model.Submissions[i].ProcessingTime)
我還刪除了要submission
的隱藏字段,因為它是 model 中的 object,而我們需要為每個屬性生成標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.