2016-11-21 2 views
0

То, что я пытаюсь сделать, это создать одну страницу для создания нового дома, а также diplsay всех существующих домов. код для основного зрения:Вставить и перечислить данные в onew View

@modelData.Models.SGHouse 

@{ 
    ViewBag.Title = ""; 
} 

<h2>Create</h2> 


@using (Ajax.BeginForm(new AjaxOptions 
             { 
             HttpMethod = "Post", 
             InsertionMode = InsertionMode.Replace, 
             UpdateTargetId = "HouseList" 
            })) 
     { 
      @Html.AntiForgeryToken() 

      <div class="form-horizontal"> 
     <h4>SGHouse</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     @*<div class="form-group"> 
      @Html.LabelFor(model => model._id, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model._id, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model._id, "", new { @class = "text-danger" }) 
      </div> 
     </div>*@ 

     <div class="form-group"> 
      @Html.LabelFor(model => model.House, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.House, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.House, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default" /> 
      </div> 
     </div> 
    </div> 
} 
@Html.Partial("_Houses",Model) 

Код для моего частичного отображения списка всех домов:

@model IEnumerable<Data.Models.SGHouse> 
<div id="HouseList"> 

    <table class="table"> 
     <tr> 
      <th> 
       @Html.DisplayNameFor(model => model.House) 
      </th> 
      <th></th> 
     </tr> 

     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => item.House) 
       </td> 
       <td> 
        @Html.ActionLink("Edit", "Edit", new { id = item._id }) | 
        @Html.ActionLink("Details", "Details", new { id = item._id }) | 
        @Html.ActionLink("Delete", "Delete", new { id = item._id }) 
       </td> 
      </tr> 
     } 

    </table> 
</div> 

Я не уверен, что точка зрения, чтобы вернуться из моего контроллера, если я :

public ActionResult Create() 
      { 
       return View(); 
      } 

Я получаю ошибку с моего частичного представления о модели - null. Если я использую:

public ActionResult Create() 
       { 
        return View(new SGHouse()); 
       } 

Тогда я получаю ошибку

Модели элемент передается в словарь типа «Data.Models.SGHouse», но этот словарь требует модель элемент системы типа». Collections.Generic.IEnumerable`1 [Data.Models.SGHouse].

Любая помощь, как решить эту проблему.

Благодаря

+0

Ваш первый взгляд только для создания нового? или это как для создания, так и для редактирования? –

ответ

2

Создать одно новое свойство в классе, как этот

public class SGHouse 
    { 

     public List<SGHouse> ListSGHouse { get; set; } 
    } 

И Constroller

public ActionResult Create() 
    { 
     SGHouse model = new SGHouse(); 
     List<SGHouse> LstSGHouse = new List<SGHouse>(); 
     LstSGHouse = //Just add list of SGHouse to this property 
     model.ListSGHouse = LstSGHouse; //Assign above to this 


     return View(model); 
    } 

В видовом Просто позвони, как этот

@Html.RenderPartial("_Houses", Model.ListSGHouse); 

Убедитесь в том, Проверьте модель не является нулевой в вашем частном виде

@if (Model != null) 
{ 

} 
+0

Большое спасибо, очень благодарен. – Fahad