2016-08-05 5 views
0

Ошибка:@Html Частичная ошибка, с помощью MVC

CS1973: 'System.Web.Mvc.HtmlHelper' has no applicable method named 'Partial' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.

Не уверен, как сортировать этот вопрос. Модель:

namespace MVCRecsStarter.ViewModels{ public class AdminViewModel 
{ 
    public Category category { get; set; } 
    public IEnumerable<Rec> recs { get; set; } 
    public IEnumerable<Category> categoriesrecs { get; set; } 
}} 

Вид:

<div id='leftItemTemplate'> 
    @Html.Partial("admin", Model.category) 
</div> 

<div id='rightItemTemplate'> 
    <h3>Find Rec to Update</h3> 
    @Html.Partial("_select_recs", Model.recs) 
    @if (Model.categoriesrecs != null) 
    { 
     @Html.Partial("_select_categories", Model.categoriesrecs) 
    } 
</div> 

_select_category:

@using (Html.BeginForm()){ 
@Html.AntiForgeryToken() 

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

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

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

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

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

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" name="action" value="Create" /> 
      <input type="submit" name="action" value="Edit" /> 
     </div> 
    </div> 
</div>} 

_select_rec:

<div> 
@using (Html.BeginForm("SelectRec", "Categories", FormMethod.Post)) 
{ 
    <div> 
     <p> 
      <select name="recs"> 
       @foreach (var item in Model) 
       { 
        <option value="@item.rec">@item.rec</option> 
       } 
      </select> 
     </p> 
     <p> 
      <input type="submit" name="action" 
        value="Select Rec" /> 
     </p> 
    </div> 
} 

Контроллер:

public ActionResult Admin() 
    { 
     Category category = new Category(); 
     IEnumerable<Rec> recs = repository.GetAllRecs(); 

     AdminViewModel adminViewModel = new AdminViewModel(); 
     adminViewModel.category = category; 
     adminViewModel.recs = recs; 

     return View(adminViewModel); 
    } 

Model.Rec

namespace MVCRecsStarter.Models{ 
public class Rec 
{ 
    [Key, Display(Name = "ID")] 
    [ScaffoldColumn(false)] 
    public int RecId { get; set; } 
    [Required, StringLength(100), Display(Name = "Title")] 
    public string RecTitle { get; set; } 
    Required, StringLength(150), Display(Name = "Link")] 
    public string RecURL { get; set; } 

    [StringLength(1000), Display(Name = "Description")] 
    public string RecDescription { get; set; } 

    [StringLength(150), Display(Name = "Image")] 
    public string Image { get; set; } 

    [Required, StringLength(15)] 
    public string Category { get; set; } 

    public virtual ICollection<Comment> Comments { get; set; } 
}} 

Любые идеи?

+0

Вы уверены, что это справедливо? Кажется, это список (коллекция), а не член? (Rec) Model.recs – Nikki9696

+0

Try @ Html.Partial ("_ select_recs", (IEnumerable )) Model.recs) и тот же для другого, что и коллекция – Nikki9696

+0

Не повезло с ошибкой: CS0246: Тип или пространство имен имя «Rec» не найдено – II2710

ответ

0

Хорошо, это работает на меня, если я понимаю, что вам нужно. Обратите внимание, что существует отдельная страница для привязки к категории.

enter image description here enter image description here

AdminController

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

namespace WebApplication2.Controllers 
{ 
    public class AdminController : Controller 
    { 
     // GET: Admin 
     public ActionResult Admin() 
     { 
      Category category = new Category() { Name = "TestC" }; 
      List<Rec> rc = new List<Rec>() 
      { 
       new Rec() { RecId=1, RecTitle="Test" } 
      }; 

      AdminViewModel adminViewModel = new AdminViewModel(); 
      adminViewModel.category = category; 
      adminViewModel.recs = (IEnumerable<Rec>)rc; 

      return View(adminViewModel); 
     } 
    } 
} 

Admin.cshtml

@model WebApplication2.Models.AdminViewModel 
    <div style="height:50px"></div> 
<div id='leftItemTemplate' style="float:left;width:30%;border:1px solid black;"> 
    <p>Category div</p> 
    @Html.Partial("adminCategory", Model.category) 
</div> 

<div id='rightItemTemplate' style="float:right;width:70%;border:1px solid black;"> 
    <p>Rec div</p> 
    <h3>Find Rec to Update</h3> 
    @Html.Partial("_select_recs", Model.recs) 
    @if (Model.categoriesrecs != null) 
    { 
     @Html.Partial("_select_categories", Model.categoriesrecs) 
    } 
</div> 

_select_recs

@model IEnumerable<WebApplication2.Models.Rec> 

<h2>_select_recs</h2> 
<ul> 
    @foreach (var item in Model) 
    { 
     <li>@item.RecTitle</li> 
    } 
</ul> 

AdminCategory вид

@model WebApplication2.Models.Category 
<h3>Category details here</h3> 
<p><b>@Model.Name</b></p> 
+0

Продолжайте это завтра и вернитесь к вам, спасибо за вашу помощь. – II2710