0

次のような動的に追加されたオブジェクトを追加しました。

@Html.EditorFor(model => model.Province)

私のモデルにはProvinceプロパティが含まれていますが、ビューには最初にオブジェクトが表示されませんでした。.show()メソッドで表示できるようにしました。

ただし、コントローラーでは、Provinceの値が常にnullであることがわかりました。このように動的に追加されたオブジェクトからアクセスできるようにするにはどうすればよいですか?

追加:私のモデルは次のようになります:

public class Location
{
    [Required]
    public int ID { get; set; }
    [Required]
    public string Name { get; set; }
    public string Description { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    [Display(Name = "State/Province")]
    public string Province { get; set; }
}

コントローラ:

    [HttpPost]
    public ActionResult Create(Location location)
    {
        if (ModelState.IsValid)
        {
            db.Location.Add(location);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
    }

見る:

    <div class="editor-label">
        @Html.LabelFor(model => model.Province)
    </div>
    <div class="editor-field">
    <div id="province_ddl">
        @Html.DropDownListFor(
            x => x.Province,
            Enumerable.Empty<SelectListItem>(),
            "-- Select State/Province --"
            )
    </div>
    <div id="province_tb" style="display: none">
        @Html.EditorFor(model => model.Province)
    </div>
        @Html.ValidationMessageFor(model => model.Province)
    </div>

ドロップダウンリストを使用すると、Provinceプロパティに適切な値が表示されます。ただし、テキストボックスコントロールを表示した場合、値はありません。つまり、コントローラーでnull値を取得します。

4

1 に答える 1

1

同じ名前の同じフォームに2つの入力フィールドを含めることはできません(Provinceあなたの場合)。実際には可能ですが、最初の値のみがコントローラーに送信されます。したがって、ドロップダウンを保持すると、常にコントローラーに送信されるドロップダウンの選択された値になります。したがって、基本的にはあなたが決める必要があります。フィールドの 1 つを無効にして (disabled="disabled"属性を追加することにより、動的に行うことができます)、他のフィールドの値のみを強制的に送信することができます。

于 2012-07-25T15:48:28.503 に答える