1

誰かが私の見解の何が悪いのか教えてもらえますか? モデル値はビューに正しく表示されますが、コントローラー アクションには返されません。public ActionResult DeleteConfirmed(ClientModel contacts) 私の ClientModel が null を返しました。

意見:

@model ContactManager.Models.ClientModel

@{
    ViewBag.Title = "Delete Information";
}

<h2>Delete Information</h2>

<h3>Are you sure you want to delete this?</h3>
<fieldset>
    <legend>Details</legend>

    <div class="display-label">ID</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.CanaClie0012.Client00130012)
    </div>

    <div class="display-label">Name</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.Clientes0013.Nombre0013)
    </div>

    <div class="display-label">Contact Number</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.CanaClie0012.Direcc0012)
    </div>

    <div class="display-label">Country</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.CanaClie0012.F1Pais00200012)
    </div>

</fieldset>
@using (Html.BeginForm()) {
    <p>
        <input type="submit" value="Delete" /> |
        @Html.ActionLink("Back to List", "Index")
    </p>
}

コントローラーのアクション:

[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(ClientModel contacts)
        {
            contacts.Clientes0013.Client0013 = contacts.CanaClie0012.Client00130012;
            contacts.Clientes0013.F1Pais00200013 = contacts.CanaClie0012.F1Pais00200012;
            Clientes0013 clientes0013 = db.Clientes0013.Find(contacts.Clientes0013.Client0013, contacts.Clientes0013.F1Pais00200013);
            db.Clientes0013.Remove(clientes0013);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
4

2 に答える 2

3

1. 以下のようにフォーム内にヘルパーを保持します。

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, null))
{
    @Html.DisplayFor(i => i.PropertyName);
    <input type="submit" name="Submit" value="Submit" />
}

2. フォームを送信し、ポスト アクション メソッドでモデルを送信するには、各 DisplayFor ヘルパーと共に非表示フィールドを使用する必要があります。

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, null))
{
    @Html.HiddenFor(i => i.PropertyName);
    @Html.DisplayFor(i => i.PropertyName);
    <input type="submit" name="Submit" value="Submit" />
}

3. ビューが以下のような場合、ポスト アクション メソッドでモデルの値を確認できません。

@Html.HiddenFor(i => i.PropertyName);
@Html.DisplayFor(i => i.PropertyName);
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, null))
{

    <input type="submit" name="Submit" value="Submit" />
}
于 2013-06-14T19:06:25.457 に答える
1

これはDisplayFor、すべてのプロパティに使用しているためです。DisplayForPOST で何も送信せず、入力を作成しません。@Html.HiddenFor(model => model.CanaClie0012.Client00130012)ビューが何かを送り返すために、各プロパティに などを追加できます。

于 2013-06-14T17:56:06.403 に答える