Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc EditorFor将值传递给viewModel中的POST控制器,但DisplayFor和HiddenFor don';T_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc EditorFor将值传递给viewModel中的POST控制器,但DisplayFor和HiddenFor don';T

Asp.net mvc EditorFor将值传递给viewModel中的POST控制器,但DisplayFor和HiddenFor don';T,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我认为: @Html.EditorFor(m => m.Contact, new{style="width: 650px"}) 控制器: [HttpGet] public ActionResult Backflip() { // TODO: Make sure name is what we expect var contact = getContact(); return View(

我认为:

@Html.EditorFor(m => m.Contact, new{style="width: 650px"})
控制器:

[HttpGet]
        public ActionResult Backflip()
        {
            // TODO: Make sure name is what we expect
            var contact = getContact();
            return View(new BackflipViewModel(contact));
        }

 [HttpPost]
    public ActionResult Broadcast(BackflipViewModel vm)
    {...
视图模型:

public class BackflipViewModel
{

    public BackflipViewModel()
    {
    }

    public BackflipViewModel(Contact contact)
    {
        Sender = contact;
    }

    public Contact Sender { get; set; }

}

我真的只是想要一个hiddenFor,但如果我尝试@Html.hiddenFor(m=>m.Sender),我的POST controller方法中的“vm”包含一个针对Sender的空值。同样适用于DisplayFor。我怎样才能躲藏起来工作

这是因为
HiddenFor
-不同于
EditorFor
-无法为复杂对象生成完整的字段集

相反,您应该执行以下操作

查看模型

public string SenderId { get; set; }
查看

@Html.HiddenFor(m => m.SenderId)
控制器

[HttpPost]
public ActionResult Broadcast(BackflipViewModel vm)
{
    If (ModelState.IsValid)
    {
        Sender sender = getContact(Model.SenderId);
    }
}

DisplayFor
不会写出输入元素,因此其值不会出现在POST中。这不是它的目的。至于
HiddenFor
Model.Sender
肯定有值吗?能否检查隐藏字段是否在标记(在浏览器中)中呈现,以及它是否有值?啊,好的。我刚刚检查过,当我使用HiddenFor时,它正在呈现Sender。vm确实包含其他具有EditorFor()的属性,但vm.Sender为null。@AntP-response得到了它!非常感谢蚂蚁:)