1

Я просто пытаюсь изучить MVC и столкнуться с некоторыми проблемами. Когда я отправляю свое частичное представление, я получаю нулевой код в блоке внутри Create Method.Модель пуста при отправке формы на частичный просмотр в MVC5

Что я делаю неправильно и что такое правильный подход?

View (Index.cshtml)

@model IEnumerable<Samples.Controllers.Blog> 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table class="table"> 
    <tr> 
     <th>Sample</th> 
     <th>URL</th> 
     <th>Name</th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) | 
      @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) | 
      @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }) 
     </td> 
     <td> 
      @item.URL 
     </td> 
     <td> 
      @item.Name 
     </td> 
    </tr> 
} 

</table> 

@Html.Partial("_CreateBlog", new Samples.Controllers.Blog()) 

Частичный вид (_CreateBlog.cshtml)

@model Samples.Controllers.Blog 

@using (Html.BeginForm("Create","Sample",FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>Blog</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="row"> 
      @Html.LabelFor(model => model.URL) 
      @Html.EditorFor(model => model.URL) 
     </div> 
     <div class="row"> 
      @Html.LabelFor(model => model.Name) 
      @Html.EditorFor(model => model.Name) 
     </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> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

SampleController.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace Samples.Controllers 
{ 
    public class SampleController : Controller 
    { 
     List<Blog> lstBlogs; 
     public SampleController() 
     { 
      lstBlogs = new List<Blog> 
      { 
       new Blog{ Name="Domnic", URL= "www.google.com"}, 
       new Blog{ Name="Tom", URL= "www.YAHOO.com"}, 
       new Blog{ Name="Cat", URL= "www.facebook.com"}, 
       new Blog{ Name="Bob", URL= "www.twitter.com"} 
      }; 
     } 
     // GET: Sample 
     public ActionResult Index() 
     { 
      return View(lstBlogs); 
     } 
     public ActionResult IndexWithDynamicView() 
     { 
      return View(lstBlogs); 
     } 

     [HttpPost] 
     public void Create(Blog blog) 
     { 

     } 
    } 
    public class Blog 
    { 
     public string Name; 
     public string URL; 
    } 

} 

ответ

4

Ваш класс Blog содержит только поля, а не свойства, поэтому DefaultModelBinder не может комплект их значения. Изменить его добавить геттеры/сеттеров

public class Blog 
{ 
    public string Name { get; set; } 
    public string URL { get; set; } 
} 
Смежные вопросы