[英]@Html Partial error, using MVC
错误:
CS1973:'System.Web.Mvc.HtmlHelper'没有名为'Partial'的适用方法,但似乎具有该名称的扩展方法。 扩展方法不能动态调度。 考虑强制转换动态参数或在不使用扩展方法语法的情况下调用扩展方法。
不确定如何解决此问题。 模型:
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);
}
记录模型
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; }
}}
有任何想法吗?
好吧,如果我了解您的要求,那么这对我有用。 请注意,有一个单独的页面用于绑定到类别。
管理员控制器
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.