1

エンティティ "Bond" には、別のエンティティである "Kauf" という名前のプロパティがあります ("Price" = date, addedBy, value)。

ここで、債券のビューの作成 (= 購入) では、価格の値を入力する必要があります。標準の Create View には、価格データを入力するためのフィールドがありません。

追加すると

    <div class="editor-field">
        @Html.EditorFor(model => model.Kauf.Value)
        @Html.ValidationMessageFor(model => model.Kauf.Value)
    </div>

ビューに、通常はエンティティ「Bond」のみがパラメーターとして受け入れられるコントローラーでその値を把握するにはどうすればよいでしょうか?

    [HttpPost]
    public ActionResult Create(Bond position)

経由でアクセスしようとしています

    position.Kauf.Value 

ボンドから(まだ)空のプロパティ「カウフ」を参照するだけだと思います。入力していただきありがとうございます!

4

3 に答える 3

4

「エンティティ」によって実際の ORM エンティティを参照している場合、それがおそらく問題です。生のエンティティではなく、ビューとの間でデータを渡すためにビューモデルを使用する必要があります。たとえば、次のことを試すことができます。

モデル

public class KaufViewModel
{
    public double Price { get; set; }
    public string Value { get; set; }
    ...
}

public class BondViewModel
{
    public KaufViewModel Kauf { get; set; }
}

コントローラ

[HttpGet]
public ActionResult Create()
{
    return View(new BondViewModel());
}

[HttpPost]
public ActionResult Create(BondViewModel bond)
{
    // bond.Kauf.Value should be set at this point (given it's set in the form)
    return View(bond); // fields should be re-populated
}

意見

@model BondViewModel

@using(@Html.BeginForm())
{
    @Html.EditorFor(model => model.Kauf)
    <p><input type="submit" value="Save" /></p>
}
于 2013-05-29T15:43:26.663 に答える
4

これはコメントするには長すぎるため、回答として投稿します。私は再作成しようとしましたが、ここですべて機能しているので、自分がしていることと比較できるように、私が持っているものを投稿すると思いました:

ここでは文字列だと思いKauf.Valueます...

コントローラ

[HttpGet]
public ActionResult Create()
{
    // Setup model before passing in
    var model = new Bond();
    return View(model);
}

[HttpPost]
public ActionResult Create(Bond position)
{
    string theValue = position.Kauf.Value;
    // At this point "theValue" contains a valid item
    return View(position);
}

意見

@model MvcExperiments.Models.Bond

@using(@Html.BeginForm())
{
    <div class="editor-field">
        @Html.EditorFor(model => model.Kauf.Value)
        @Html.ValidationMessageFor(model => model.Kauf.Value)
    </div>

    <p>
        <input type="submit" value="Save" />
    </p>    
}
于 2013-05-29T15:41:49.203 に答える