Html.HiddenFor带有预设值

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。
这是第二部分,目前尚未解决:
这是我的操作:

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值。
1个回答

14

正确的设置预设值的方法是通过模型传递它(如果您设置了“value”参数,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 ) %>

它能工作,但在我的视图页面中,我得到了一些用户需要完成并发送按钮的信息,当我点击发送时,idv再次设置为null值,您能解释一下如何解决这个问题吗? - Chlebta
现在一切看起来都很好,我不知道为什么你仍然得到空值。你能确认在 Reserver(string) 动作中你设置了一个不为空的值到 idv 中吗?如果你尝试调用该动作而没有提供参数,idv 将会为空,那么就不应该有什么意外情况了。 - Ethan Brown
换句话说,在return View(viewModel)这行代码上设置一个断点,看一下viewModel.idv是否是您期望的值。如果是,则查看呈现后的HTML页面的源代码。您应该会看到带有正确value参数的隐藏输入框。如果没问题,那么可能是您的视图出了问题...这可能是您想要在问题中包含的下一个内容。 - Ethan Brown
我已经进行了一些断点测试,所以当我调用我的操作“reserver”时,“idv”获得了字符串 “id”的值,到目前为止一切都很正常。但是当我检查 “model.idv” 时,我发现它是 null,这意味着 “idv” 没有被成功发送到我的视图中。 - Chlebta
1
哦!你需要把Html.HiddenFor(model.idv)放在Html.BeginForm里面...否则,在将其传回到HttpPost控制器时,模型将不会更新该值。 - Ethan Brown
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接