[英]@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.