0

すぐに私の質問は次のとおり です。ビューがあります-モデルタスクに強く型付けされています。ビューには、後でコントローラーに渡すフォームがあります。ビューの task.CreationUserId に値を割り当てたい。値は ViewBag を使用してビューに表示されましたが、重要ではありません。構文は何ですか?

全文を読みたい方は:

タスクを作成するビューがあります。ビューは、タスク モデルに強く型付けされます。タスクのパラメーターの 1 つに taskCreationUserID があります。

最初に、パラメーター CurrentuserId として取得するコントローラーがあります

 public ActionResult CreateForEdit(int id)
        {
            ViewBag.AmountsId = new SelectList(db.Amounts1, "Id", "Interval");
            ViewBag.TaskStatusesId = new SelectList(db.TaskStatuses, "Id", "Status");
            ViewBag.TaskTypesId = new SelectList(db.TaskTypes, "Id", "Type");
            ViewBag.CreationUserID = new SelectList(db.Users, "Id", "UserName");
            ViewBag.UserId = id;
            return View();
        } 

それはこのビューを呼び出します:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Task</legend>
             @Html.HiddenFor(model => model.Id)

        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>

等々...

次に、コントローラーを使用してこのタスクを保存します。

[HttpPost]
        public ActionResult CreateForEdit(Task task)
        {
            if (ModelState.IsValid)
            {
                task.CreationDate = DateTime.Now;
                task.Piority = "p2";
                task.TaskStatusesId = 1;

                task.CreationUserID = UserId;
                db.Tasks.Add(task);
                db.SaveChanges();
                return RedirectToAction("Index", new { id = UserId });
            }

問題は、ViewBag.UserId の値をビューにどのように配置して、それが task.CreationUserID としてコントローラーに返されるかということです。

4

3 に答える 3

1

ViewBag は、一度に 1 つのポスト バック リクエストで使用できます。View Bag の代わりに Session を使用できます。

于 2013-01-17T12:19:05.793 に答える
1

Viewbag は、データを保持する単なる動的オブジェクトです。状態管理は関与しません。その中に保存されているものは、ポストバックで失われます。

モデルに UserId を追加し、model.id のような隠しフィールドを追加する必要があります。

于 2013-01-17T12:22:08.190 に答える
0

Task オブジェクトに UserId プロパティがあるか、作成できると仮定します。

ViewBag に入れずに、代わりに yout メソッドで新しいTaskオブジェクトを作成し、そのプロパティHttpGetに値を割り当てます。idvar task = new Task(); task.CreationUserID = id;

次に、非表示フィールドで Taskオブジェクトを View en storeに渡します。task.CreationUserID@Html.HiddenFor(model => model.CreationUserID)

メソッドではHttpPost、タスク プロパティから取得できるので、タスク プロパティからtask.CreationUserID 削除できます。task.CreationUserID = UserId;if statement

于 2013-01-17T12:28:18.950 に答える