2014-11-19 3 views
0

Я новичок в MVCПредельное значение текстового поля

У меня есть Employee ПОКО как этот

[PetaPoco.TableName("tblEmployee")] 
[PetaPoco.PrimaryKey("EmployeeId")] 
public class Employee 
{ 
    public int EmployeeId { get; set; } 
    public string Name { get; set; } 
    public string Gender { get; set; } 
    public string City { get; set; } 
    public int DepartmentId { get; set; } 
} 

отдела Id фактически является внешним ключом исходя из таблицы tblDepartment. Поэтому я хочу ограничить значение DepartmentId при создании нового Employee в качестве значений, существующих в таблице tblDepartment (column: Id). Как это сделать?

Существующий код в Create View @ Html.EditorFor (модель => model.DepartmentId)

+2

Создать раскрывающийся список в вашей точке зрения, передающие отделы и связать выбранное значение '' DepartmentID –

+0

почему вы позволяете пользователю создать отдел идентификатор? если это целое число или что-то еще, то оно автоматически ограничивает текстовое поле? –

ответ

0

Обычно ссылочной целостности управляется на уровне базы данных.

Взаимосвязь между вашей службой и отделами в вашей базе данных для обеспечения целостности ссылок, поэтому, если вы попытаетесь сохранить сотрудника, идентификатор отдела которого не существует в таблице Департамента, он должен вернуть ошибку целостности.

Захватите эту ошибку на контроллере сохранения и верните его пользователю.

Кроме того, это поможет, если вы разрешите своим пользователям загружать только данные из ограниченного списка, загруженного с существующими данными в базу данных, как это предлагается в комментариях.

Однако этого может быть недостаточно, поскольку действительное значение может быть удалено из базы данных между моментом, когда оно было отправлено в список в вашей форме, и момент отправки формы контроллеру для сохранения данных.

1

Почему бы не использовать DropDownList для выбора отдела?

@Html.DropDownListFor(m => m.DepartmentID, Model.DepartmentList, string.Empty) 

public class Yourclass 
{ 
    public SelectList DepartmentList { get; set; } 

    public Yourclass() 
    { 
     FillModel(); 
    } 

    internal void FillModel() 
    { 
     this.DepartmentList = GetDepartmentListFromDb(); 
    }  
} 
Смежные вопросы