繁体   English   中英

ViewModel回传null

[英]ViewModel posting back null

我有一个包含两个模型的视图模型,一个是IList:

public class PersonViewModel
{
   public Person person { get; set; }
   public IList<Snack> { get; set; }
}

这样就输出了我的主视图和局部视图所需的所有数据。 我遇到的问题是当我点击与“提交”按钮相关的动作时。

 @using (Html.BeginForm("ProcessSnacks", "Person", FormMethod.Post))
 {
     <input id="process" type="submit" value="Process Snacks" />
 }

在我的控制器上,我有:

public ActionResult ProcessSnacks(PersonViewModel vm)
{     
   //ViewModel is NULL here...
}

实际上,我实际上只需要PersonViewModel内部的Person模型中的数据,并尝试了许多排列...我试图仅将person作为参数而不是视图模型,但是没有运气。 我也已经遍及StackOverflow,似乎找不到另一个完全匹配的问题。

您只是将viewmodel绑定到服务器端的视图,但是视图本身不以任何方式使用数据,因此在提交数据时,客户端可能无法知道您是否希望将一些数据回传到服务器。 如果您想要这种行为,则需要在表单中包含一些字段,这样就可以将数据发送回服务器。

您必须了解,在MVC中发回邮件并不是什么奇迹,尽管大多数工作都为您完成(例如绑定),但是您必须提供最低限度的工作。 如果您不希望使用带有文本框的表单,则可以使用@Html.HiddenFor(...)帮助程序来处理需要发布到服务器的所有字段。

请注意,即使隐藏字段在浏览器中不可见,但它们是可见且可编辑的(如果您知道如何),因此传递某些需要保护免受用户访问的数据并不安全。

将视图作为模型的值放在视图中的某些文本形式/下拉列表或隐藏的文本框中,然后应在回发中看到它。

就目前而言,您的视图不包含任何模型值,因此在回发时它将为空白。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM