Ваш частичный ожидает экземпляр класса MarkdownTextAreaModel
. Так что, вместо передачи анонимного объекта, который в любом случае выдает:
@Html.Partial("MarkdownTextArea", new MarkdownTextAreaModel { Name = "content" })
Теперь, как говорится, гораздо лучшим решением было бы адаптировать вашу модель представления так, чтобы она содержала ссылку на MarkdownTextAreaModel
и использовала шаблоны редактора вместо партиалов в ваших представлениях, вот так:
public class BlogContentModel
{
[Required]
[Display(Name = "Post Title")]
public string Title { get; set; }
[Required]
[DataType(DataType.MultilineText)]
[Display(Name = "Post Content")]
public string Content { get; set; }
public MarkdownTextAreaModel MarkDown { get; set; }
}
затем, конечно, переустановите контроллер, обслуживающий это представление, чтобы он заполнил MarkDown
вашей модели представления:
public ActionResult Foo()
{
BlogContentModel model = .... fetch this model from somewhere (a repository?)
model.MarkDown = new MarkdownTextAreaModel
{
Name = "contect"
};
return View(model);
}
и затем внутри вашего основного вида просто:
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.Title)
@Html.TextBoxFor(m => m.Title)
@Html.EditorFor(x => x.MarkDown)
<input type="submit" value="Post" />
}
, а затем, чтобы следовать стандартным соглашениям, переместите ваше частичное в ~/Views/YourControllerName/EditorTemplates/MarkdownTextAreaModel.cshtml
, и теперь все волшебным образом встанет на свои места, как и должно быть.