Asp.Net MVC 中相同属性的编辑器和下拉列表

Editor and Dropdown for Same Attribute in Asp.Net MVC

我想为单个字段添加编辑器和下拉列表。如果一个机构不在数据库中,就会出现这种情况,用户输入机构名称,否则将从下拉列表中选择值。请给我建议合适的答案。这里只有第一个编辑器或下拉列表被选中,否则第二个为空,我想传递文本值以防未选择下拉列表并传递下拉值使文本框为空。

        @Html.EditorFor(model => model.AgentName)
        @Html.DropDownListFor(model => model.AgentName, ViewBag.Agency as IEnumerable<SelectListItem>, "Select")

相反,您可以使用两个属性... 作为

public string SelectedAgent{ get; set; }
public string AgentName { get; set; }

并在视图中

@Html.DropDownListFor(model => model.SelectedAgent, ViewBag.Agency as IEnumerable<SelectListItem>, "Select")
@Html.EditorFor(model => model.AgentName)

并在插入时检查 属性 有一个值....

string.IsNullOrEmpty(model.AgentName) ? model.SelectedAgent : model.AgentName

随着Class中多了一个字段,我在controller和View中加了几行代码,终于得到了答案。

查看:

@Html.DropDownListFor(model => model.AgentName, ViewBag.Agency as IEnumerable<SelectListItem>, "Select")
@Html.EditorFor(model => model.AgentNameNew)
@Html.ValidationMessageFor(model => model.AgentName)

控制器:

internationalarrival.AgentName = string.IsNullOrEmpty(internationalarrival.AgentNameNew) ? internationalarrival.AgentName : internationalarrival.AgentNameNew;
db.InternationalArrivals.Add(internationalarrival);
db.SaveChanges();

并在

型号:

public partial class InternationalArrival
{
    public decimal InternationalArrivalId { get; set; }
    public string AgentName { get; set; }

    public string AgentNameNew { get; set; }
    [Required]
    public string AgentCode { get; set; }


    public Nullable<DateTime> ArrivalDate { get; set; }

    [Required]
    public Nullable<int> ForPAX { get; set; }
    [Required]
    public Nullable<int> IndPAX { get; set; }
}