2017-11-08 1 views
2

1つのフィールドにエディタとドロップダウンリストを追加したいと思います。このようなケースは、ある代理店がデータベースにない場合に発生し、ユーザーが代理店の名前を入力すると、値がドロップダウンから選択されます。適切な答えを教えてください。ここでは、最初のエディタまたはドロップダウンリストのみが選択されています。それ以外の場合はnullです。ドロップダウンが選択されていない場合はテキスト値を渡して、ドロップダウン値を渡してテキストボックスを空にします。Asp.Net MVCの同じ属性のエディタとドロップダウンMVC

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

2つのフォームコントロールを同じプロパティにバインドすることはできません(「DefaultModelBinder」は最初のフォームコントロールのみをバインドします)。別のプロパティを持つビューモデルを作成する –

+0

投稿された値が 'DropDownListFor'ではなく' EditorFor'であると思われます。モデルバインディングごとに、最初のヘルパーがポストされ、同じviewmodelプロパティを持つ他のヘルパーは無視されます。両方のヘルパーに別々のプロパティを使用します。 –

答えて

0

代わりに使用すると、2つのプロパティ...

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 
0

Classにもう1つのフィールドを追加して、コントローラと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; } 
} 
関連する問題