2017-01-29 71 views
-2

我剛剛開始與MVC的旅程,但我有一個問題,兩天我找不到答案。 我有一個站點的EditorFor和ListBoxFor,我想從EditorFor關於Name和從ListBoxFor發佈關於EmployeeId的信息。MVC,ListBoxFor使EditorFor空

在列表框中,我列出了我的員工。我可以在編輯器中寫名字,我可以從列表中選擇一名員工。

一切都很好,但是當我在ListBox內標記任何內容時,它使EditorFor中的文本消失。

查看:

@model Models.CreateClient 

@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 
<div> 
    <h4>Client</h4> 
    <hr /> 
    <div class="col-md-6"> 
     @Html.ValidationSummary(true, "", new {@class = "text-danger"}) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.Client.Name, htmlAttributes: new {@class = "control-label col-md-2"}) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Client.Name, new {htmlAttributes = new {@class = "form-control"}}) 
       @Html.ValidationMessageFor(model => model.Client.Name, "", new {@class = "text-danger"}) 
      </div> 
     </div> 
    </div> 

    <div class="col-md-6"> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.SelectedEmployee, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.ListBoxFor(model => model.SelectedtEmployee, Model.EmployeeListItem(), new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.SelectedEmployee, "", new { @class = "text-danger" }) 
      </div> 
     </div> 
    </div> 

    <div class="form-group col-md-6"> 
      <input type="submit" value="CreateNew" class="btn btn-default " /> 
      @Html.ActionLink("Back to List", "Index") 
     </div> 
</div> 
} 

型號:

public class CreateClient 
{ 
    public Client Client { get; set; } 
    public List<Employee> Employees { get; set; } 
    public IEnumerable<int> SelectedtEmployee { get; set; } 
    public IEnumerable<SelectListItem> EmployeeListItem() 
    { 
     List<SelectListItem> employeeSelectedListItem = new List<SelectListItem>(); 
     foreach (var employee in Employees) 
     { 
      SelectListItem selectListItem = new SelectListItem() 
      { 
       Text = employee.FullName, 
       Value = employee.Id.ToString(), 
      }; 
      employeeSelectedListItem.Add(selectListItem); 
     } 
     return employeeSelectedListItem; 
    } 
} 

控制器:

public ActionResult CreateNew() 
    { 
     CreateClient createClient = new CreateClient(); 
     createClient.Employees = db.EmployeeContet.ToList(); 

     return View(createClient); 
    } 
+0

根據您顯示的代碼不可能。但是'ListBoxFor()'用於選擇多個選項(並且屬性'SelectedtEmployee'需要爲'IEnumerable'),但是您的問題表明您只想選擇一個員工。而事實上你有一個相關的'LabelFor()'和'ValidationMessageFor()屬性'Client.EmployeeId'(不是'SelectedtEmployee')也沒有意義 –

+0

我只能假設你的意思是你輸入一個名字,並且當您提交表單時,您將返回視圖,並且您輸入的文本將不再顯示。你需要向你展示模型和這個視圖的控制器代碼。 –

+0

您還需要顯示POST方法(並且作爲一個附註,刪除Selected = employee.IsEmployeeSelected,它絕對沒有什麼 - 它的綁定屬性的值決定了選擇的內容。 '僱員'有一個屬性'IsEmployeeSelected'沒有任何意義) –

回答

-1

我犯的錯誤,我的客戶的名字是INT(而不是字符串)。

+0

這並不能解釋你描述的問題。由於這對其他人沒有用處,所以我建議你刪除答案和問題 –