Asp.net mvc NHibernate/ASP.NET textarea绑定问题
我正在使用nhibernate在MVC3中开发一个应用程序。 这是一个问答论坛,在第一页上,问题显示为链接,底部有一个文本区域,用于输入问题。 我已经为相同的对象创建了一个类和一个映射文件。 问题类别: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
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());
}