我创建了一个与WCF服务一起使用的基本应用程序。该应用程序执行基本的插入更新删除操作。
我已经这样定义了IService
接口:
[ServiceContract]
public interface IService1
{
[OperationContract]
IEnumerable<Person> GetPersons();
[OperationContract]
IEnumerable<Person> GetPersonsByFNameAndLName(string FName,string LName);
[OperationContract]
void InsertPerson(Person personobj);
[OperationContract]
void UpdatePerson(Person personobj);
[OperationContract]
void DeletePerson(int id);
}
[DataContract]
public class Person
{
[DataMember]
[Key]
[Required]
public int Id { get; set; }
[DataMember]
[Required]
public string FName { get; set; }
[DataMember]
[Required]
public string MName { get; set; }
[DataMember]
[Required]
public string LName { get; set; }
[DataMember]
[Required]
public DateTime DOB { get; set; }
[DataMember]
[Required]
public string Adddress { get; set; }
[DataMember]
[Required]
public string NIC { get; set; }
}
这是我的service1.svc.cs
类文件的代码(它包含用于获取人员列表和更新人员的方法的代码段)
public class Service1 : IService1
{
public IEnumerable<Person> GetPersons()
{
List<Person> personList = new List<Person>();
PersonContext po = new PersonContext();
personList = po.Persons.ToList();
return personList;
}
public void UpdatePerson(Person personobj)
{
PersonContext po = new PersonContext();
var c = (from per in po.Persons
where per.Id == personobj.Id
select per).First();
c.FName = personobj.FName;
c.LName = personobj.LName;
c.MName = personobj.MName;
po.SaveChanges();
}
}
和我的数据库上下文类看起来像这样:
public class PersonContext : DbContext
{
public PersonContext() : base("PersonCS")
{
}
public DbSet<Person> Persons { get; set; }
}
我正在使用PersonCS
文件中的web.config
数据库连接来连接到我的数据库。
我已将此服务添加为对我的ASP.NET MVC项目的服务引用。
这是我的ASP.NET MVC项目中控制器类的代码。该代码段包含用于查看和更新的方法。
public class PersonController : Controller
{
public ActionResult getPersons()
{
Service1Client SEObj = new Service1Client();
List<Person>PeLi =SEObj.GetPersons().ToList();
ViewBag.List = PeLi;
return View();
}
public ActionResult updatePerson()
{
return View();
}
[HttpPost]
public ActionResult updatePerson(Person personobj)
{
Service1Client SCOBJ = new Service1Client();
SCOBJ.UpdatePerson(personobj);
return View();
}
}
这是视图后面的代码:
<form method="post" action="@Url.Action("updatePerson")">
ID:<input type="text" name="Id" />
<br />
First Name: <input type="text" name="FName" />
<br />
Middle Name: <input type="text" name="MName" />
<br />
Last Name: <input type="text" name="LName" />
<br />
Date of Birth:<input type="date" id="start" name="DOB" value="2018-07-22" min="1900-01-01" max="2000-12-31" />
<br />
NIC:<input type="text" name="NIC" />
<br />
Address:<input type="text" name="Adddress" />
<br />
<input type="submit" value="Insert" />
</form>
在视图中,我试图手动输入ID并删除。
我想做的是用数据库中可用的ID填充组合框,然后从组合框中的ID中进行选择。
有人可以帮助我或指导我实现这一目标吗?
答案 0 :(得分:2)
我建议将List<SelectListItems>
传递给您。这样可以减少从Controller到视图的流量:
public ActionResult updatePerson()
{
Service1Client SEObj = new Service1Client();
List<Person>PeLi =SEObj.GetPersons().ToList();
ViewBag.List = PeLi.Select(x => new SelectListItems {
Value = x.Id,
Text = x.FName + " " + x.LName
});
return View();
}
现在ViewBag.List
中有您的List<SelectListItems>
个人。
在视图中,您只需要显示以下列表:
@Html.DropDownList("personId", new SelectList(ViewBag.List, "Value", "Test"))
这将显示一个下拉列表。
在将表单发布到控制器上时,您应该提出一个新问题或寻找其他答案,以了解如何从控制器端的表单中接收值。