![](/img/trans.png)
[英]WCF Service populate data to ASP.net dropdownlist (Learning WCF Service)
[英]Populate combobox in ASP.NET MVC with data from a WCF service
我創建了一個與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; }
}
我正在使用web.config
文件中的PersonCS
數據庫連接來連接到數據庫。
我已將此服務添加為對我的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中進行選擇。
誰能幫助我或指導我實現這一目標?
我建議將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"))
這將顯示一個下拉列表。
在將表單發布到控制器上時,您應該提出一個新問題或尋找其他答案,以了解如何從控制器側的表單中接收值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.