我正在开发MVC3中的应用程序。 基本上它是一个问题论坛,在问题页面上,用户将在末尾看到所有问题的链接和帖子评论框。当他点击问题链接时,他被移动到答案页面。现在答案页面正在使用另一个模型类而他们我无法获得答案类数据
我发现每个Controller都有一个视图和一个模型 但我希望我的观点可以访问多个模型,我不知道如何去做..
我试过了:
public class MainClass
{
public Question_Page question{ get; set; }
public Answer_Page answer { get; set; }
}
public class Question_Page
{
public virtual int Id { get; set; }
public virtual string Question_name { get; set; }
public virtual DateTime Created_Date { get; set; }
public virtual DateTime Modified_Date { get; set; }
public virtual int Created_By { get; set; }
public virtual int Modified_By { get; set; }
public virtual char Deleted { get; set; }
public Question_Page()
{
this.Deleted='F';
}
}
public class Answer_Page
{
public virtual int Id { get; set; }
public virtual string Answer { get; set; }
public virtual DateTime Created_Date { get; set; }
public virtual DateTime Modified_Date { get; set; }
public virtual int Created_By { get; set; }
public virtual int Modified_By { get; set; }
public virtual char Deleted { get; set; }
public virtual Question_Page Question { get; set; }
public Answer_Page()
{
this.Deleted='F';
}
}
现在在问题列表的视图中,我显示问题列表:
@model IEnumerable<Core.Model.MainPage>
@{
ViewBag.Title = "Index";
}
<style type="text/css">
ul
{
list-style-type: none;
}
</style>
<h2>All Questions</h2>
<hr />
@using (Html.BeginForm("Index","Question",FormMethod.Post))
{
@Html.ValidationSummary(true)
<ul>
@foreach (var item in Model)
{
<li>@Html.ActionLink(item.Question_name, "answer", new { Qry = item.Id })</li>
}
</ul>
<label for="PostyourQuestion:">Post your Question:</label><br /><br />
@Html.TextArea("textID")
<br />
<input type="submit"/>
}
在做了这么多之后我就开始犯了错误: @foreach(模型中的var项目)
这是我的控制者:
public ActionResult Index()
{
return View(new StudentService().GetAllStudents());
}
[HttpPost]
public ActionResult Index(Question_Page question,string textID)
{
question.Question_name = textID;
question.Created_Date = DateTime.Now;
question.Modified_Date = DateTime.Now;
question.Created_By = 101;
question.Modified_By = 101;
new StudentService().SaveOrUpdateStudent(question);
return View(new StudentService().GetAllStudents());
}
StudentService是一个我定义方法的类GetAllStudents(),SaveOrUpdateStudent()
请帮帮我
答案 0 :(得分:0)
我认为你的答案很简单?
@foreach (var item in Model)
应该是
@foreach (var item in Model.Question_Page)
您的模型是MainPage
?
你也可以在这里发布这个模型吗?
答案 1 :(得分:0)
假设GetAllStudents()返回IEnumerable<Student>
在你的控制器
return View(new StudentService().GetAllStudents());
发送给View的实际模型是IEnumerable<Student>
如果您需要IEnumerable<Core.Model.MainPage>
作为模型,只需从控制器返回适当的对象
IEnumerable<Core.Model.MainPage> model = //... define function that return Enumerable MainPage
return View(model);
答案 2 :(得分:0)
如果您想在不同的视图上使用相同的模型
public ActionResult Index()
{
//I am assuming, You are returning IEnumerable<MainClass>
List<MainClass> mainClass=new StudentService().GetAllStudents();
if(mainClass==null)
mainClass=new List<MainClass>(); //Incase you are not checking null value return
return View(mainClass); //return a none null IEnumerable<MainClass> object
}
[HttpPost]
public ActionResult Index(Question_Page question,string textID)
{
question.Question_name = textID;
question.Created_Date = DateTime.Now;
question.Modified_Date = DateTime.Now;
question.Created_By = 101;
question.Modified_By = 101;
new StudentService().SaveOrUpdateStudent(question);
return View(new StudentService().GetAllStudents());
}
一旦您的第一个控制器方法有效,您将需要处理绑定模型,以便第二个方法工作。
答案 3 :(得分:0)
尝试viewModel。引用了所需模型的模型。因此,如果视图绑定到您的视图模型,则ViewModel中引用的所有模型也将被绑定。