[英]Set Query results from WCF service to MVC3 controller
I have a situation here. 我这里有个情况。 I am working with MVC3 web app.
我正在使用MVC3网络应用程序。 I wrote a WCF web service which communicates with DB.
我编写了一个与DB通信的WCF Web服务。 In a view I am trying to display all records from Student table.
在一个视图中,我试图显示学生表中的所有记录。
Here is the code of StudentContorller
where I make call to web service to get all student records: 这是
StudentContorller
的代码,我在其中调用Web服务以获取所有学生记录:
ServiceStudentClient client = new ServiceStudentClient();
client.GetAllStudents(); //What should be the return type??
return View(students.ToList()); //something like this??
Here is the definition of function in StudentService
: 这是
StudentService
中函数的定义:
public void GetAllStudents()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["StudentCon"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from Student";
cmd.Connection = con;
con.Open();
SqlDataReader studentReader = cmd.ExecuteReader();
con.Close();
//Need to write code here to return students
}
Here is student view students.chtml
: 这是学生视图
students.chtml
:
@model IEnumerable<StudentRegistrationPortal.Models.StudentModel>
@{
ViewBag.Title = "All Students";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Add New Student", "Create")
</p>
<table>
<tr>
<th>
RollNumber
</th>
<th>
Password
</th>
<th>
Name
</th>
<th>
Email
</th>
<th>
Balance
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.RollNumber)
</td>
<td>
@Html.DisplayFor(modelItem => item.Password)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.Balance)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.SId }) |
@Html.ActionLink("Details", "Details", new { id=item.SId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.SId })
</td>
</tr>
}
</table>
So I am confused that in what dataType I should receive student records from service plus how would I return those records in form of list so that student view could process them. 所以我很困惑,我应该从哪种dataType接收来自服务的学生记录,以及我将如何以列表的形式返回这些记录,以便学生视图可以处理它们。 I dont want to change view code.
我不想更改视图代码。 Please help.
请帮忙。
One way of doing that could be to create a Student class in your service. 一种方法是在服务中创建一个Student类。 Say
ServiceStudent
. 说
ServiceStudent
。
public class ServiceStudent
{
//your student properties...
}
then from your method : GetAllStudents()
, you can fill up List. 然后从您的方法:
GetAllStudents()
,您可以填充List。
public List<ServiceStudent> GetAllStudents()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["StudentCon"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from Student";
cmd.Connection = con;
con.Open();
SqlDataReader studentReader = cmd.ExecuteReader();
//Fill List of ServiceStudent from reader...
con.Close();
}
then on client side: 然后在客户端:
ServiceStudentClient client = new ServiceStudentClient();
List<Service.ServiceStudent> serviceList = client.GetAllStudents();
//Now you need to map your ServiceStudent to ModelStudent here
List<ModelStudent> modelList = new List<ModelStudent>();
foreach(var serviceStudent in serviceList)
{
ModelStudent model = new ModelStudent();
model.property = serviceStudent.property;
//Etc etc
modelList.Add(model);
}
//Note : This is just rough code, For mapping you should use Mapper or write your custom method for mapping...
return View(modelList ); //pass Model Student here...
I hope it will help. 希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.