-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);
}
根據您顯示的代碼不可能。但是'ListBoxFor()'用於選擇多個選項(並且屬性'SelectedtEmployee'需要爲'IEnumerable'),但是您的問題表明您只想選擇一個員工。而事實上你有一個相關的'LabelFor()'和'ValidationMessageFor()屬性'Client.EmployeeId'(不是'SelectedtEmployee')也沒有意義 –
我只能假設你的意思是你輸入一個名字,並且當您提交表單時,您將返回視圖,並且您輸入的文本將不再顯示。你需要向你展示模型和這個視圖的控制器代碼。 –
您還需要顯示POST方法(並且作爲一個附註,刪除Selected = employee.IsEmployeeSelected,它絕對沒有什麼 - 它的綁定屬性的值決定了選擇的內容。 '僱員'有一個屬性'IsEmployeeSelected'沒有任何意義) –