我顯示列表中的房間僅用於顯示,如果用戶對顯示很滿意,他們可以將其導出爲pdf(它們不能改變任何東西)頁雖然)MVC模型子列表null在帖子上,除非使用TextBoxFor
我的主要問題是,當我提交表單時,房間爲空。
現在我知道如果我將@Html.ValueFor
更改爲@Html.TextBoxFor
等併發布表單,Rooms具有一個值,這很好,但我不希望在此頁面上顯示文本框,標籤或值是我所需要的。
我試過@Html.DisplayTextFor
,但它是相同的結果,在房間爲空。
有人可以建議我如何能夠實現我所需要的?
控制器
[HttpPost]
public ActionResult GeneratePdf(CommissionReportViewModel model)
{
// Some other processing
}
視圖模型
public class CommissionReportViewModel : ApiCredentials
{
public string Organiser { get; set; }
public string EventName { get; set; }
public string EventDate { get; set; }
public BookingPages Bookings { get; set; }
public double TotalCommission { get; set; }
public string CurrencyCode { get; set; }
public List<CommissionReportRooms> Rooms { get; set; }
}
查看
@for(var i = 0; i < Model.Rooms.Count();i++)
{
<tr>
<td>@Html.ValueFor(m => Model.Rooms[i].DelegateName)</td>
<td>
@Html.ValueFor(m => Model.Rooms[i].FirstDate, "{0:dd MMM yyyy}")
</td>
<td>@Html.ValueFor(m => Model.Rooms[i].Nights)</td>
<td>@Html.ValueFor(m => Model.Rooms[i].RoomType)</td>
<td>@Html.ValueFor(m => Model.Rooms[i].GrossTotal, "{0:0.00}") @Html.DisplayTextFor(m => Model.Rooms[i].Currency)</td>
<td>@Html.ValueFor(m => Model.Rooms[i].Rate, "{0:0.00}%")</td>
<td>@Html.ValueFor(m => Model.Rooms[i].Commission, "{0:0.00}") @Html.DisplayTextFor(m => Model.Rooms[i].Currency)</td>
<td></td>
</tr>
}
您可以隱藏包含這些值的字段,這些字段將被提交但不可見,或者您可以使用帶有'readonly'屬性的文本框來顯示。 – markpsmith
帶有隻讀屬性的文本框也是我的想法,我並不是真的想要加載隱藏的字段,但是如果沒有其他方式,那麼足夠公平 – Thunderchild
您不應該生成隱藏的輸入。您向客戶端發送了大量額外的數據,然後再次將所有數據恢復原樣(降低性能並打開自己以過度發佈攻擊)。在POST方法中,如果需要,再次從存儲庫獲取集合 –