1

たぶん、タイトルはそれほど明確ではありません。私の状況を説明させてください

コントローラーに get メソッドと post メソッドがあります。GET メソッドで、データベース コンテキストからエンティティを取得します。

    [HttpGet]
    public ActionResult RecheckAssignment(short id)
    {
        var assignment = db.Assignments.Find(id);
        Session["QuestionList"] = QuestionRepositoryManager.GetAllPossibleQuestionsFromJson(assignment.Content);  // it's a list!

        return View(Session["QuestionList"]);
    }

割り当てエンティティには、10 個のプロパティが含まれます。モデルでこのエンティティを表示すると、すべてのプロパティを使用していることがわかりますが、ユーザーが投稿すると、POST METHOD で 2 つのプロパティ (Id 文字列、Changed bool) のみを取得する必要があります。

メソッドのパラメーターの中に何を入れるかはわかりません。

    [HttpPost]
    public ActionResult RecheckAssignment(...)
    {
        return View();
    }

後でエンティティを再度取得する必要があるため、すべてをセッション変数に入れました。これはセッションを使用する良いオプションだと思いますが、よくわかりません。

では、エンティティを更新するために Id プロパティと Changed プロパティのみを取得するには、メソッド内に何を記述する必要がありますか。

4

1 に答える 1

1

ASP.NET MVC が a<form>中に a を Action にマップすると、POSTできることを埋めます。次のようなクラスを考えてみましょう:

public class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
}

そして今、このフォームを考えてみましょう:

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
    Html.TextBoxFor(m => m.Make)
}

そして今、このアクションを考えてみましょう:

public ActionResult ActionName(Car model)
{
    // the values of Car will look like this
    model.Make   // this will be what was in the text box
    model.Model  // this will be null
    model.Year   // this will be 0
}

nullおよび0がこれらのタイプのデフォルト値であることに注意してください。そのためPOST、プロパティModelが必要な場合は、フォームで取得する必要があります。でそれを行うことができますが@Html.TextBoxFor、ユーザーに見られたくない場合はどうすればよいでしょうか? まあ、私もそれを行うことができます:

Html.HiddenFor(m => m.Model);

そのため、フォームがPOST編集されるModelと、ダウンロードされた値が入力されます。したがって、必要なすべてのプロパティが何らかの方法でフォームに含まれていることを確認してください。

于 2013-04-12T03:09:30.087 に答える