如何使用html帮助器在MVC 5 razor视图中使用模型属性显示标签和文本框?

时间:2014-04-14 09:27:12

标签: asp.net-mvc razor html-helper

我无法使用html助手在我的视图中使用模型创建标签和文本框。

我的视图语法:

  @using (Ajax.BeginForm("RoomsAvail",new AjaxOptions
                                {
                                  UpdateTargetId = "RoomsAvailData",
                                  InsertionMode ="InsertionMode.Replace"
                                }))                                                                                                             
 {
    <input type='text' id="Checkin" class="form-control datepicker" />
    <input type='text' id="Checkout" class="form-control datepicker" />
    <button type="submit" value="Search"></button>
 }
@model IEnumerable<RoomAvailabilitySummary>
 <div>
     @Html.LabelFor(model=>model.ARRDAT)
 </div>
 <div>
     @Html.EditorFor(model=>model.Name)
 </div>

我的模特

public class RoomAvailabilitySummary
{
   public string ARRDAT{get;set;}
   public string Name{get;set;}
}

执行此操作后,我的视图不会将模型属性渲染到我的视图中以显示标签文本并将错误视为“Syste.Collection.Generic.IEnumerable不包含ARRDAT的定义”

为什么我无法在html帮助器中呈现模型属性以在html帮助器的帮助下显示名称?

我还想在控制器中访问我的模型值。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

你的模特是:

@model IEnumerable<RoomAvailabilitySummary>

您尝试访问Name中的IEnumerable

 <div>
     @Html.EditorFor(model=>model.Name)
 </div>

如果是foreach,则应使用IEnumerable;如果不是@model RoomAvailabilitySummary,则应使用IEnumerable

<强>加了:

这样的事情应该有效:

@model IEnumerable<RoomAvailabilitySummary>

@if(Model.Count() > 0)
{
 <div>
     @Html.LabelFor(model=>Model.First().Name)
 </div>
}

@foreach (var item in Model)
{
 <div>
     @Html.EditorFor(model=>item.Name)
 </div>
}

答案 1 :(得分:0)

我想你正试图迭代模型(列表):

@model IEnumerable<RoomAvailabilitySummary>
@Html.LabelFor(model => model[0].Name)
@foreach(var room in Model)
{
    <br />
    @Html.EditorFor(x => room.Name)
}