У меня есть следующий код View, Controller и Comment.cs, но я получаю ошибку,
Элемент модели, передаваемый в словарь, имеет тип 'TMPBlog.Models.Comment', но для этого словаря требуется элемент модели типа 'TMPBlog.Models.Post'.
Если я не введу текст в два обязательных текстовых поля @Html.TextBox ("CommentEmail") и @Html.TextArea ("CommentDetail", new {cols = " 65 ", rows =" 7 "}) , если я это сделаю, то работает нормально.
Код контроллера,
public ActionResult Index(int PostID)
{
Post post = db.Posts.Single(p => p.PostID == PostID);
return View(post);
}
[HttpPost]
public ActionResult Index(Comment comment)
{
if (ModelState.IsValid)
{
string CommentEmail = comment.CommentEmail;
string CommentDetail = comment.CommentDetail;
CommentDetail = CommentDetail.Replace("\n", "<br />");
comment.CommentDetail = CommentDetail;
db.Comments.AddObject(comment);
db.SaveChanges();
return RedirectToAction("CommentResponse", new { id = comment.CommentID });
}
return View(comment);
}
Comment.cs
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace TMPBlog.Models
{
[MetadataType(typeof(CommentMetaData))]
public partial class Comment
{
}
public class CommentMetaData
{
[Required(ErrorMessage = "You must enter an email address!")]
public object CommentEmail { get; set; }
[Required]
public object CommentDetail { get; set; }
}
}
вид,
@model TMPBlog.Models.Post
@Html.ValidationSummary("There is an error")
@using (Html.BeginForm())
{
@Html.Hidden("CommentDate", String.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now))
@Html.Hidden("PostCommentFK", @Html.DisplayFor(model => model.PostID))
<br />
<span class="BlueHeading">Add Your Comments Here!</span>
<br /><br />
<div class="editor-label">
Email Address
</div>
<div class="editor-field">
@Html.TextBox("CommentEmail")
@Html.ValidationMessage("CommentEmail", "*")
</div>
<div class="editor-label">
Comments
</div>
<div class="editor-field">
@Html.TextArea("CommentDetail", new { cols = "65", rows = "7" })
@Html.ValidationMessage("CommentDetail", "*")
</div>
<div class="editor-field">
@Html.CheckBox("CommentTicked") Email me when others comment
</div>
<p>
<input type="submit" value="Add Comment" />
</p>
}
Как мне это решить?
Приветствия
Mike.