【问题标题】:Editor and Dropdown for Same Attribute in Asp.Net MVCAsp.Net MVC 中相同属性的编辑器和下拉列表
【发布时间】:2018-04-20 16:50:00
【问题描述】:

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

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

【问题讨论】:

  • 您不能将 2 个表单控件绑定到同一个属性(DefaultModelBinder 只绑定第一个。创建具有单独属性的视图模型
  • 好像贴出来的值是EditorFor而不是DropDownListFor。根据模型绑定,第一个助手将被发布,其他具有相同视图模型属性的助手将被忽略。为两个助手使用单独的属性。

标签: javascript c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-3


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在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; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多