Asp.net mvc NHibernate/ASP.NET textarea绑定问题

Asp.net mvc NHibernate/ASP.NET textarea绑定问题,asp.net-mvc,asp.net-mvc-3,nhibernate,textarea,modelstate,Asp.net Mvc,Asp.net Mvc 3,Nhibernate,Textarea,Modelstate,我正在使用nhibernate在MVC3中开发一个应用程序。 这是一个问答论坛,在第一页上,问题显示为链接,底部有一个文本区域,用于输入问题。 我已经为相同的对象创建了一个类和一个映射文件。 问题类别: public class Questions { public virtual int QuestionID { get; set; } [Required] public virtual string Question { get; set; } publi

我正在使用nhibernate在MVC3中开发一个应用程序。 这是一个问答论坛,在第一页上,问题显示为链接,底部有一个文本区域,用于输入问题。 我已经为相同的对象创建了一个类和一个映射文件。 问题类别:

public class Questions
{
    public virtual int QuestionID { get; set; }

    [Required]
    public virtual string Question { get; set; }

    public virtual int CreatedBy{ get; set; }

    public virtual DateTime CreatedDate { get; set; }

    public virtual int ModifiedBy { get; set; }

    public virtual DateTime ModifiedDate { get; set; }

    public virtual char Deleted { get; set; }

    public virtual IList<Answers> Answer { get; set; }
}
内部视图:

@using (Html.BeginForm("Question_Page","QuestionAnswer",FormMethod.Post))
{ 
@Html.ValidationSummary(false) 
<ul>
@foreach (var item in Model)
{
    <li>@Html.ActionLink(item.Question, "Answer_Page", new { Id = item.QuestionID}) </li>
}
   </ul>

 <br />
<h2><label for="PostyourQuestion:">Post your Question:</label></h2>
 @Html.TextArea("PostyourQuestion")    
<br /><br />
<input type="submit"/>
@使用(Html.BeginForm(“问题页面”,“问题答案”,FormMethod.Post))
{ 
@Html.ValidationSummary(false)
    @foreach(模型中的var项目) {
  • @ActionLink(item.Question,“答案页面”,新的{Id=item.QuestionID})
  • }

发布您的问题: @Html.TextArea(“PostyourQuestion”)

}


现在的问题是,它没有保存在“PostyourAnswer”文本区域中输入的值。即使在其中输入值。如果我删除必需的属性,它将在表中保存数据,但当用户不输入数据时,我需要提供一些验证。请帮助我如何在ViewModel/模型中执行此操作,将MultilineText属性添加到tour Question属性,以便在出现问题时将其呈现为文本区域

[Required]
[DataType (DataType.MultilineText)]
public virtual string Question { get; set; }
更改
@Html.TextArea(“PostyourQuestion”)

创建一个“视图模型”——一个包含视图所需属性的特殊类,并将其用作视图的模型

例如


嘿,但是我使用这个模型IEnumerable作为我的模型类型,所以不能使用Html.EditorFor(model.Question)数据。我使用的是输入类型实际上,EditorFor参数需要是lambda:
@Html.EditorFor(m=>m.Question)
@esker你是对的,但正如我上面所说的,我使用的是IEnumerable,所以我不能使用它。你能给我建议一些其他的处理方法吗@埃斯克:谢谢,埃斯克。我错过了。现在更新我的答案。
@using (Html.BeginForm("Question_Page","QuestionAnswer",FormMethod.Post))
{ 
@Html.ValidationSummary(false) 
<ul>
@foreach (var item in Model)
{
    <li>@Html.ActionLink(item.Question, "Answer_Page", new { Id = item.QuestionID}) </li>
}
   </ul>

 <br />
<h2><label for="PostyourQuestion:">Post your Question:</label></h2>
 @Html.TextArea("PostyourQuestion")    
<br /><br />
<input type="submit"/>
[Required]
[DataType (DataType.MultilineText)]
public virtual string Question { get; set; }
@Html.EditorFor(m => m.Question)
public class AddQuestionViewModel 
{
   public List<Question> Questions { get; set; }

   [Required]
   [DataType (DataType.MultilineText)]
   public string QuestionToAsk{ get; set; }
}
@using (Html.BeginForm("Question_Page","QuestionAnswer",FormMethod.Post))
{ 
@Html.ValidationSummary(false) 
<ul>
@foreach (var item in Model)
{
    <li>@Html.ActionLink(item.Question, "Answer_Page", new { Id = item.QuestionID}) </li>
}
   </ul>

 <br />
<h2><label for="PostyourQuestion:">Post your Question:</label></h2>
@Html.EditorFor(x => x.QuestionToAsk)   
<br /><br />
<input type="submit"/>
[HttpPost]
public ActionResult Question_Page(AddQuestionViewModel viewModel)
{
    if (ModelState.IsValid)
    {

        var ques = new Question();
        ques.Question = viewModel.QuestionToAsk;
        ques.CreatedDate = DateTime.Now;
        ques.ModifiedDate = DateTime.Now;
        ques.CreatedBy = 101;
        ques.ModifiedBy = 101;


        new QuestionService().SaveOrUpdateQuestions(ques);
    }
    return View(new QuestionService().GetAllQuestions());
}