2

これは私のモデルです:

public class MyModel
{
    public List<long> NeededIds { get; set; }
    public string Name { get; set; }
}

私のコントローラー:

public ActionResult Create()
{
    MyModel model = new MyModel();
    model.NeededIds = new List<long> { 1, 2, 3, 4 };
    return View(model);
}

[HttpPost]
public ActionResult Create(MyModel model)
{
    string name = model.Name;
    List<long> ids = model.NeededIds;
    return RedirectToAction("Index");
}

そして見る:

@model TestMVC.Models.MyModel

@using(Html.BeginForm()) {

<table>
    <thead>
        <tr>
            <th>
                Id
            </th>
        </tr>
    </thead>
    <tbody>
        @foreach(long id in Model.NeededIds) { 
            <tr>
                <td>
                    @id
                </td>
            </tr>
        }
    </tbody>
</table>

@Html.ValidationSummary(true)
<fieldset>
    <legend>MyModel</legend>
    <div class="editor-label">
        @Html.LabelFor(model => model.Name)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Name)
        @Html.ValidationMessageFor(model => model.Name)
    </div>
    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
}

NeededIdsGet actionを設定すると、ビューに表示されますNeededIds。ポストアクションでも必要ですが、ポストアクションでNeededIdsは常にnullです。get actionで設定した場合、post actionでプロパティ値を取得するにはどうすればよいですか?あなたの提案は何ですか?

4

3 に答える 3

2

NeededIdsサーバーにバックを投稿していません。これを機能させるために、フォーム内のforループに非表示フィールドとして追加できます。

@for (int i = 0; i < Model.NeededIds.Count(); i++) { 
    @Html.HiddenFor(model => model.NeededIds[i])
}
于 2012-05-22T07:07:06.103 に答える
1

レイアウトページを使用している場合は、レイアウトページからフォームタグを削除するだけです。

于 2012-06-08T06:03:00.130 に答える
0

Yakimychによる回答に加えて
、IDを一定に保っています。これは2つのことを意味し
ます。1。リストの代わりに配列を使用できます
。2。IDリスト/配列を保存してTempData、POST時にそこから取得できます。
GETハンドラーでこのように行うことができます

TempData.Add("ids",idArray);

POSTハンドラーで

var idArray = (long[])TempData["ids"];
于 2012-05-22T07:10:38.300 に答える