7

この部分はEthan Brown 、ヘルパーの値をプリセット値で設定したいので、とてもHtml.HiddenFor気に入っています。これが私のコードです。

<%: Html.HiddenFor(model => model.idv, new { @value = ViewBag.id })%>
<%: Html.HiddenFor(model => model.etat, new { @value = "false" })%>

しかし、私のコードを実行すると、model.idvとmodele.etatがnullであるというエラーが発生します。
これは今まで愛されていない2番目の部分です:
これは私の行動です:

public ActionResult Reserver(string id)

    {
        var model = new Models.rservation
        {
            idv = id,
            etat = false
        };
        return View(model);
    }

[HttpPost]
        public ActionResult Reserver(Models.rservation model)
        {
            if (ModelState.IsValid)
            {
                entity.AddTorservation(model);
                entity.SaveChanges();
                return View();
            }
            else
            {

                return View(model);
            }
        }

そしてこれは私のビューページです:

<% using (Html.BeginForm("Reserver", "Home", FormMethod.Post, new { @class = "search_form" })) { %>
//some code textbox to fill
<input type="submit" value="Create" />
<% } %>

したがって、送信ボタンをクリックすると、model.idvがnull値に再度設定されます

4

1 に答える 1

14

プリセット値を設定する正しい方法は、モデルを介して渡すことです (設定した場合、MVC は「値」パラメーターを無視するように見えます)。あなたが探しているものを達成するには、あなたの行動で:

public ActionResult MyAction() {
  var model = new MyModel {
    idv = myPresetId,
    etat = false
  };
  return View( model );
}

次に、次のことを除いて、ビューで何もする必要はありません。

<%: Html.HiddenFor( model => model.idv ) %>
<%: Html.HiddenFor( model => model.etat ) %>
于 2012-04-27T22:17:59.300 に答える