簡體   English   中英

使用WCF服務中的數據填充ASP.NET MVC中的組合框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM